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