final
This commit is contained in:
parent
6bac297408
commit
ae9b93a13e
@ -21,7 +21,7 @@ data class UserDto(
|
|||||||
@SerialName("lastEnter")
|
@SerialName("lastEnter")
|
||||||
val lastEntry : String? = null,
|
val lastEntry : String? = null,
|
||||||
@SerialName("access")
|
@SerialName("access")
|
||||||
val access : String,
|
val access : Boolean,
|
||||||
@SerialName("authorities")
|
@SerialName("authorities")
|
||||||
val authorities : String
|
val authorities : String
|
||||||
) {
|
) {
|
||||||
|
@ -19,6 +19,7 @@ class UserRepoImpl (
|
|||||||
login = login,
|
login = login,
|
||||||
position = dto.position,
|
position = dto.position,
|
||||||
lastEntry = dto.lastEntry ?: "",
|
lastEntry = dto.lastEntry ?: "",
|
||||||
|
access = dto.access
|
||||||
)
|
)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -4,11 +4,12 @@ import kotlinx.serialization.Serializable
|
|||||||
@Serializable
|
@Serializable
|
||||||
data class UserEntity(
|
data class UserEntity(
|
||||||
val id : Long,
|
val id : Long,
|
||||||
var login: String,
|
val login: String,
|
||||||
var name: String,
|
val name: String,
|
||||||
var avatarUrl: String?,
|
val avatarUrl: String?,
|
||||||
val position : String,
|
val position : String,
|
||||||
var lastEntry : String?,
|
val lastEntry : String?,
|
||||||
|
val access : Boolean,
|
||||||
val authorities : String
|
val authorities : String
|
||||||
|
|
||||||
)
|
)
|
||||||
|
@ -3,11 +3,14 @@ package ru.myitschool.work.ui.admin
|
|||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import android.widget.Toast
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.viewModels
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
|
import androidx.lifecycle.viewModelScope
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import com.squareup.picasso.Picasso
|
import com.squareup.picasso.Picasso
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
import ru.myitschool.work.R
|
import ru.myitschool.work.R
|
||||||
import ru.myitschool.work.databinding.FragmentAdminBinding
|
import ru.myitschool.work.databinding.FragmentAdminBinding
|
||||||
import ru.myitschool.work.databinding.FragmentProfileBinding
|
import ru.myitschool.work.databinding.FragmentProfileBinding
|
||||||
@ -33,17 +36,34 @@ class AdminFragment : Fragment(R.layout.fragment_admin) {
|
|||||||
viewModel.search(login)
|
viewModel.search(login)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
viewBinding.switchMaterial.setOnCheckedChangeListener { _, isChecked ->
|
||||||
|
if (isChecked) {
|
||||||
|
viewModel.viewModelScope.launch {
|
||||||
|
viewModel.unblockUser()
|
||||||
|
viewBinding.switchMaterial.text = "Доступ запрещен"
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
viewModel.viewModelScope.launch {
|
||||||
|
viewModel.blockUser()
|
||||||
|
viewBinding.switchMaterial.text = "Доступ разрешен"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
viewModel.state.collectWithLifecycle(this) { state ->
|
viewModel.state.collectWithLifecycle(this) { state ->
|
||||||
|
|
||||||
viewBinding.error.visibility = if (state is AdminViewModel.State.Error) View.VISIBLE else View.GONE
|
viewBinding.error.visibility = if (state is AdminViewModel.State.Error) View.VISIBLE else View.GONE
|
||||||
|
viewBinding.switchMaterial.visibility = if (state is AdminViewModel.State.Show) View.VISIBLE else View.GONE
|
||||||
|
|
||||||
|
|
||||||
when(state) {
|
when(state) {
|
||||||
is AdminViewModel.State.Loading -> Unit
|
is AdminViewModel.State.Loading -> Unit
|
||||||
is AdminViewModel.State.Show -> {
|
is AdminViewModel.State.Show -> {
|
||||||
viewBinding.noData.visibility = View.GONE
|
viewBinding.noData.visibility = View.GONE
|
||||||
viewBinding.name.text = "Должность: ${state.profileInfo.position}"
|
viewBinding.name.text = "${state.profileInfo.name}"
|
||||||
|
viewBinding.position.text = "Должность: ${state.profileInfo.position}"
|
||||||
if (state.profileInfo.lastEntry == null) viewBinding.lastEntry.text = "Время последнего входа: Нет данных"
|
if (state.profileInfo.lastEntry == null) viewBinding.lastEntry.text = "Время последнего входа: Нет данных"
|
||||||
else viewBinding.lastEntry.text = "Время последнего входа: ${state.profileInfo.lastEntry}"
|
else viewBinding.lastEntry.text = "Время последнего входа: ${state.profileInfo.lastEntry}"
|
||||||
Picasso.get().load(state.profileInfo.avatarUrl).resize(100, 100).centerCrop().into(viewBinding.imageView)
|
Picasso.get().load(state.profileInfo.avatarUrl).resize(100, 100).centerCrop().into(viewBinding.imageView)
|
||||||
|
@ -42,8 +42,9 @@ class AdminViewModel(
|
|||||||
getUserUseCase.invoke(login).fold(
|
getUserUseCase.invoke(login).fold(
|
||||||
onSuccess = { data ->
|
onSuccess = { data ->
|
||||||
Log.d("uraa", "успех успех ${data.toString()}")
|
Log.d("uraa", "успех успех ${data.toString()}")
|
||||||
|
if (data.access == true) State.Show(data, entranceList, true)
|
||||||
|
else State.Show(data, entranceList, false)
|
||||||
|
|
||||||
State.Show(data, entranceList)
|
|
||||||
},
|
},
|
||||||
onFailure = { error ->
|
onFailure = { error ->
|
||||||
Log.d("kaput", error.message.toString())
|
Log.d("kaput", error.message.toString())
|
||||||
@ -115,7 +116,8 @@ class AdminViewModel(
|
|||||||
data object Loading: State
|
data object Loading: State
|
||||||
data class Show(
|
data class Show(
|
||||||
val profileInfo : UserEntity,
|
val profileInfo : UserEntity,
|
||||||
val entrancesList : List<EntranceEntity>
|
val entrancesList : List<EntranceEntity>,
|
||||||
|
val flag : Boolean
|
||||||
) : State
|
) : State
|
||||||
data class Error(
|
data class Error(
|
||||||
val text: String
|
val text: String
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package ru.sicampus.bootcamp2025.ui.centerList
|
package ru.sicampus.bootcamp2025.ui.centerList
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.util.Log
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
@ -34,7 +35,7 @@ class EntranceAdapter(
|
|||||||
) : RecyclerView.ViewHolder(binding.root) {
|
) : RecyclerView.ViewHolder(binding.root) {
|
||||||
fun bind(item : EntranceEntity) {
|
fun bind(item : EntranceEntity) {
|
||||||
binding.time.text = item.enteredAt
|
binding.time.text = item.enteredAt
|
||||||
binding.time.text = item.enterType
|
binding.type.text = item.enterType
|
||||||
binding.entry.text = item.name
|
binding.entry.text = item.name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -134,13 +134,6 @@
|
|||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
tools:text="Ошибка помогите" />
|
tools:text="Ошибка помогите" />
|
||||||
|
|
||||||
<Button
|
|
||||||
android:id="@+id/refresh"
|
|
||||||
android:layout_width="45dp"
|
|
||||||
android:layout_height="45dp"
|
|
||||||
android:layout_gravity="center"
|
|
||||||
android:background="@drawable/ic_refresh"
|
|
||||||
android:gravity="center" />
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
@ -242,6 +235,7 @@
|
|||||||
app:layout_constraintVertical_bias="1.0" />
|
app:layout_constraintVertical_bias="1.0" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
android:id="@+id/textView4"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="20dp"
|
android:layout_height="20dp"
|
||||||
android:layout_marginBottom="4dp"
|
android:layout_marginBottom="4dp"
|
||||||
@ -314,11 +308,24 @@
|
|||||||
app:layout_constraintTop_toBottomOf="@+id/view2" />
|
app:layout_constraintTop_toBottomOf="@+id/view2" />
|
||||||
|
|
||||||
|
|
||||||
|
<com.google.android.material.switchmaterial.SwitchMaterial
|
||||||
|
android:id="@+id/switchMaterial"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:checked="true"
|
||||||
|
android:text="@string/access_right"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textOff="@string/access_wrong"
|
||||||
|
android:textOn="@string/access_right"
|
||||||
|
android:textSize="16sp"
|
||||||
|
app:layout_constraintBottom_toTopOf="@+id/textView4"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintHorizontal_bias="0.497"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/lastEntry"
|
||||||
|
app:layout_constraintVertical_bias="0.634"
|
||||||
|
app:thumbTint="@color/white"
|
||||||
|
app:trackTint="@color/orange" />
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/recyclerView"
|
android:id="@+id/recyclerView"
|
||||||
|
23
app/src/main/res/values-en/strings.xml
Normal file
23
app/src/main/res/values-en/strings.xml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<string name="app_name">NTO Pass</string>
|
||||||
|
<string name="authorization">Authorization</string>
|
||||||
|
<string name="login">Login</string>
|
||||||
|
<string name="password">Password</string>
|
||||||
|
<string name="password_hint">Password must contain at least 8 characters</string>
|
||||||
|
<string name="sign_in">Sign in</string>
|
||||||
|
<string name="error_valid">Validation Error</string>
|
||||||
|
<string name="error_invalid_credentials">Wrong login or password</string>
|
||||||
|
<string name="error_unknown">Unknown error</string>
|
||||||
|
<string name="entry_history">Entry history</string>
|
||||||
|
<string name="entry_time">Entry time</string>
|
||||||
|
<string name="entry">Entry</string>
|
||||||
|
<string name="type_of_entrance">Type of pass</string>
|
||||||
|
<string name="no_data">No data</string>
|
||||||
|
<string name="qr_success_result">Success</string>
|
||||||
|
<string name="qr_wrong_result">Something wrong</string>
|
||||||
|
<string name="qr_null_result">Operation was cancelled</string>
|
||||||
|
<string name="profile">Profile</string>
|
||||||
|
<string name="find">Find</string>
|
||||||
|
<string name="close_button">Close</string>
|
||||||
|
</resources>
|
@ -17,8 +17,10 @@
|
|||||||
<string name="qr_wrong_result">Что-то пошло не так</string>
|
<string name="qr_wrong_result">Что-то пошло не так</string>
|
||||||
<string name="qr_null_result">Вход был отменён</string>
|
<string name="qr_null_result">Вход был отменён</string>
|
||||||
<string name="profile">Профиль</string>
|
<string name="profile">Профиль</string>
|
||||||
<string name="user_view">Просмотр пользователя</string>
|
<string name="user_view" translatable="false">Просмотр пользователя</string>
|
||||||
<string name="found_user">Найти информацию о сотруднике</string>
|
<string name="found_user" translatable="false">Найти информацию о сотруднике</string>
|
||||||
<string name="find">Найти</string>
|
<string name="find">Найти</string>
|
||||||
<string name="access">Доступ\n</string>
|
<string name="access" translatable="false">Доступ\n</string>
|
||||||
|
<string name="access_right" translatable="false">Доступ разрешен</string>
|
||||||
|
<string name="access_wrong" translatable="false">Доступ запрещен</string>
|
||||||
</resources>
|
</resources>
|
Loading…
x
Reference in New Issue
Block a user