From ae9b93a13e82247dfc5db7ffac142e7c2306d07d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D1=81=D0=B5=D0=BD=D0=B8=D0=B8?= Date: Thu, 20 Feb 2025 16:50:59 +0300 Subject: [PATCH] final --- .../ru/myitschool/work/data/user/UserDto.kt | 2 +- .../myitschool/work/data/user/UserRepoImpl.kt | 1 + .../myitschool/work/domain/user/UserEntity.kt | 9 +++--- .../myitschool/work/ui/admin/AdminFragment.kt | 22 ++++++++++++- .../work/ui/admin/AdminViewModel.kt | 6 ++-- .../work/ui/profile/EntranceAdapter.kt | 3 +- app/src/main/res/layout/fragment_admin.xml | 31 ++++++++++++------- app/src/main/res/values-en/strings.xml | 23 ++++++++++++++ app/src/main/res/values/strings.xml | 8 +++-- 9 files changed, 81 insertions(+), 24 deletions(-) create mode 100644 app/src/main/res/values-en/strings.xml diff --git a/app/src/main/java/ru/myitschool/work/data/user/UserDto.kt b/app/src/main/java/ru/myitschool/work/data/user/UserDto.kt index 09b3680..a7f9b3f 100644 --- a/app/src/main/java/ru/myitschool/work/data/user/UserDto.kt +++ b/app/src/main/java/ru/myitschool/work/data/user/UserDto.kt @@ -21,7 +21,7 @@ data class UserDto( @SerialName("lastEnter") val lastEntry : String? = null, @SerialName("access") - val access : String, + val access : Boolean, @SerialName("authorities") val authorities : String ) { diff --git a/app/src/main/java/ru/myitschool/work/data/user/UserRepoImpl.kt b/app/src/main/java/ru/myitschool/work/data/user/UserRepoImpl.kt index 8643d6e..b86450a 100644 --- a/app/src/main/java/ru/myitschool/work/data/user/UserRepoImpl.kt +++ b/app/src/main/java/ru/myitschool/work/data/user/UserRepoImpl.kt @@ -19,6 +19,7 @@ class UserRepoImpl ( login = login, position = dto.position, lastEntry = dto.lastEntry ?: "", + access = dto.access ) } diff --git a/app/src/main/java/ru/myitschool/work/domain/user/UserEntity.kt b/app/src/main/java/ru/myitschool/work/domain/user/UserEntity.kt index 4ccf054..fb467e3 100644 --- a/app/src/main/java/ru/myitschool/work/domain/user/UserEntity.kt +++ b/app/src/main/java/ru/myitschool/work/domain/user/UserEntity.kt @@ -4,11 +4,12 @@ import kotlinx.serialization.Serializable @Serializable data class UserEntity( val id : Long, - var login: String, - var name: String, - var avatarUrl: String?, + val login: String, + val name: String, + val avatarUrl: String?, val position : String, - var lastEntry : String?, + val lastEntry : String?, + val access : Boolean, val authorities : String ) diff --git a/app/src/main/java/ru/myitschool/work/ui/admin/AdminFragment.kt b/app/src/main/java/ru/myitschool/work/ui/admin/AdminFragment.kt index 1641e06..5d2999c 100644 --- a/app/src/main/java/ru/myitschool/work/ui/admin/AdminFragment.kt +++ b/app/src/main/java/ru/myitschool/work/ui/admin/AdminFragment.kt @@ -3,11 +3,14 @@ package ru.myitschool.work.ui.admin import android.annotation.SuppressLint import android.os.Bundle import android.view.View +import android.widget.Toast import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope import androidx.navigation.fragment.findNavController import com.squareup.picasso.Picasso +import kotlinx.coroutines.launch import ru.myitschool.work.R import ru.myitschool.work.databinding.FragmentAdminBinding import ru.myitschool.work.databinding.FragmentProfileBinding @@ -33,17 +36,34 @@ class AdminFragment : Fragment(R.layout.fragment_admin) { 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 -> 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) { is AdminViewModel.State.Loading -> Unit is AdminViewModel.State.Show -> { 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 = "Время последнего входа: Нет данных" else viewBinding.lastEntry.text = "Время последнего входа: ${state.profileInfo.lastEntry}" Picasso.get().load(state.profileInfo.avatarUrl).resize(100, 100).centerCrop().into(viewBinding.imageView) diff --git a/app/src/main/java/ru/myitschool/work/ui/admin/AdminViewModel.kt b/app/src/main/java/ru/myitschool/work/ui/admin/AdminViewModel.kt index 0b230bc..f6b98d0 100644 --- a/app/src/main/java/ru/myitschool/work/ui/admin/AdminViewModel.kt +++ b/app/src/main/java/ru/myitschool/work/ui/admin/AdminViewModel.kt @@ -42,8 +42,9 @@ class AdminViewModel( getUserUseCase.invoke(login).fold( onSuccess = { data -> 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 -> Log.d("kaput", error.message.toString()) @@ -115,7 +116,8 @@ class AdminViewModel( data object Loading: State data class Show( val profileInfo : UserEntity, - val entrancesList : List + val entrancesList : List, + val flag : Boolean ) : State data class Error( val text: String diff --git a/app/src/main/java/ru/myitschool/work/ui/profile/EntranceAdapter.kt b/app/src/main/java/ru/myitschool/work/ui/profile/EntranceAdapter.kt index 6d1ee9d..c375a4d 100644 --- a/app/src/main/java/ru/myitschool/work/ui/profile/EntranceAdapter.kt +++ b/app/src/main/java/ru/myitschool/work/ui/profile/EntranceAdapter.kt @@ -1,6 +1,7 @@ package ru.sicampus.bootcamp2025.ui.centerList import android.content.Context +import android.util.Log import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.DiffUtil @@ -34,7 +35,7 @@ class EntranceAdapter( ) : RecyclerView.ViewHolder(binding.root) { fun bind(item : EntranceEntity) { binding.time.text = item.enteredAt - binding.time.text = item.enterType + binding.type.text = item.enterType binding.entry.text = item.name } } diff --git a/app/src/main/res/layout/fragment_admin.xml b/app/src/main/res/layout/fragment_admin.xml index d6ec2be..b84bec1 100644 --- a/app/src/main/res/layout/fragment_admin.xml +++ b/app/src/main/res/layout/fragment_admin.xml @@ -134,13 +134,6 @@ android:gravity="center" tools:text="Ошибка помогите" /> -