This commit is contained in:
Ксении 2025-02-20 16:50:59 +03:00
parent 6bac297408
commit ae9b93a13e
9 changed files with 81 additions and 24 deletions

View File

@ -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
) {

View File

@ -19,6 +19,7 @@ class UserRepoImpl (
login = login,
position = dto.position,
lastEntry = dto.lastEntry ?: "",
access = dto.access
)
}

View File

@ -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
)

View File

@ -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)

View File

@ -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<EntranceEntity>
val entrancesList : List<EntranceEntity>,
val flag : Boolean
) : State
data class Error(
val text: String

View File

@ -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
}
}

View File

@ -134,13 +134,6 @@
android:gravity="center"
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>
<androidx.constraintlayout.widget.ConstraintLayout
@ -242,6 +235,7 @@
app:layout_constraintVertical_bias="1.0" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="20dp"
android:layout_marginBottom="4dp"
@ -314,11 +308,24 @@
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
android:id="@+id/recyclerView"

View 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>

View File

@ -17,8 +17,10 @@
<string name="qr_wrong_result">Что-то пошло не так</string>
<string name="qr_null_result">Вход был отменён</string>
<string name="profile">Профиль</string>
<string name="user_view">Просмотр пользователя</string>
<string name="found_user">Найти информацию о сотруднике</string>
<string name="user_view" translatable="false">Просмотр пользователя</string>
<string name="found_user" translatable="false">Найти информацию о сотруднике</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>