adminFragment
This commit is contained in:
		
							parent
							
								
									b8147eff8b
								
							
						
					
					
						commit
						1af9aad25b
					
				| @ -10,7 +10,8 @@ class GetUserUseCase( | ||||
|     private fun getUserFromStorage() : UserDto? { | ||||
|         return authStorageDataSource.userInfo | ||||
|     } | ||||
|     suspend operator fun invoke() = repo.getUser(getUserFromStorage()?.login!!) | ||||
|     suspend operator fun invoke(user_login : String?) = repo.getUser(user_login | ||||
|         ?: getUserFromStorage()?.login!!) | ||||
|     suspend fun getEntrancesList() = repo.getEntrancesList(getUserFromStorage()?.login!!) | ||||
| 
 | ||||
| } | ||||
| @ -1,5 +1,6 @@ | ||||
| package ru.myitschool.work.ui.admin | ||||
| 
 | ||||
| import android.annotation.SuppressLint | ||||
| import android.os.Bundle | ||||
| import android.view.View | ||||
| import androidx.fragment.app.Fragment | ||||
| @ -12,6 +13,7 @@ import ru.myitschool.work.databinding.FragmentAdminBinding | ||||
| import ru.myitschool.work.databinding.FragmentProfileBinding | ||||
| import ru.myitschool.work.ui.profile.ProfileViewModel | ||||
| import ru.myitschool.work.utils.collectWithLifecycle | ||||
| import ru.sicampus.bootcamp2025.ui.centerList.EntranceAdapter | ||||
| 
 | ||||
| class AdminFragment : Fragment(R.layout.fragment_admin) { | ||||
|     private var _viewBinding: FragmentAdminBinding? = null | ||||
| @ -19,27 +21,47 @@ class AdminFragment : Fragment(R.layout.fragment_admin) { | ||||
|     private val viewModel by viewModels<AdminViewModel> { AdminViewModel.Factory } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     override fun onViewCreated(view: View, savedInstanceState: Bundle?) { | ||||
|         _viewBinding = FragmentAdminBinding.bind(view) | ||||
|         super.onViewCreated(view, savedInstanceState) | ||||
|         val adapter = EntranceAdapter() | ||||
|         viewBinding.recyclerView.adapter = adapter | ||||
| 
 | ||||
| // | ||||
| //    viewModel.state.collectWithLifecycle(this) { state -> | ||||
| // | ||||
| //        viewBinding.error.visibility = if (state is AdminViewModel.State.Error) View.VISIBLE else View.GONE | ||||
| // | ||||
| // | ||||
| //        when(state) { | ||||
| //            is AdminViewModel.State.Loading -> Unit | ||||
| //            is AdminViewModel.State.GoToInfo -> { | ||||
| //                findNavController().navigate() | ||||
| //            } | ||||
| //            is ProfileViewModel.State.Error -> { | ||||
| //                viewBinding.errorText.text = state.text | ||||
| //            } | ||||
| //        } | ||||
| // | ||||
| //    } | ||||
|         viewBinding.findButton.setOnClickListener { | ||||
|             val login = viewBinding.userLogin.text.toString() | ||||
|             viewModel.search(login) | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|     viewModel.state.collectWithLifecycle(this) { state -> | ||||
| 
 | ||||
|         viewBinding.error.visibility = if (state is AdminViewModel.State.Error) 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}" | ||||
|                 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) | ||||
| 
 | ||||
|                 if (state.entrancesList.isEmpty()) { | ||||
|                     viewBinding.noData.visibility = View.VISIBLE | ||||
|                 } | ||||
|                 else { | ||||
|                     viewBinding.recyclerView.visibility = View.VISIBLE | ||||
|                     adapter.submitList(state.entrancesList) | ||||
| 
 | ||||
|                 } | ||||
|             } | ||||
|             is AdminViewModel.State.Error -> { | ||||
|                 viewBinding.errorText.text = state.text | ||||
|             } | ||||
|         } | ||||
|         } | ||||
| } | ||||
| 
 | ||||
| override fun onDestroyView() { | ||||
|  | ||||
| @ -15,6 +15,7 @@ import ru.myitschool.work.domain.user.EntranceEntity | ||||
| import ru.myitschool.work.domain.user.GetUserUseCase | ||||
| import ru.myitschool.work.domain.user.UnBlockUseCase | ||||
| import ru.myitschool.work.domain.user.UserEntity | ||||
| import ru.myitschool.work.ui.profile.ProfileViewModel.State | ||||
| 
 | ||||
| class AdminViewModel( | ||||
|     private val getUserUseCase: GetUserUseCase, | ||||
| @ -24,15 +25,9 @@ class AdminViewModel( | ||||
|     private val _state = MutableStateFlow<State>(State.Loading) | ||||
|     val state = _state.asStateFlow() | ||||
| 
 | ||||
|     init { | ||||
|         updateStateGet() | ||||
|     } | ||||
| 
 | ||||
|     fun clickRefresh() { | ||||
|         updateStateGet() | ||||
|     } | ||||
| 
 | ||||
|     fun updateStateGet() { | ||||
|     fun search( | ||||
|         login : String, | ||||
|     ) { | ||||
|         viewModelScope.launch { | ||||
|             _state.emit(State.Loading) | ||||
|             val entranceList : List<EntranceEntity> = getUserUseCase.getEntrancesList().fold( | ||||
| @ -44,22 +39,54 @@ class AdminViewModel( | ||||
|                 } | ||||
|             ) | ||||
|             _state.emit( | ||||
|                 getUserUseCase.invoke().fold( | ||||
|                 getUserUseCase.invoke(login).fold( | ||||
|                     onSuccess = { data -> | ||||
|                         Log.d("uraa", "успех успех ${data.toString()}") | ||||
| 
 | ||||
|                         State.GoToInfo(data, entranceList) | ||||
|                         State.Show(data, entranceList) | ||||
|                     }, | ||||
|                     onFailure = { error -> | ||||
|                         Log.d("kaput", error.message.toString()) | ||||
|                         State.Error(error.message.toString()) | ||||
|                     } | ||||
|                 ) as State | ||||
|             ) | ||||
|             ) | ||||
|             _state.emit(State.Error("о нет ошибка ошибка помогите")) | ||||
|             _state.emit(State.Error("Не удалось загрузить профиль")) | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| //    fun clickRefresh() { | ||||
| //        updateStateGet() | ||||
| //    } | ||||
| 
 | ||||
| //    fun updateStateGet() { | ||||
| //        viewModelScope.launch { | ||||
| //            _state.emit(State.Loading) | ||||
| //            val entranceList : List<EntranceEntity> = getUserUseCase.getEntrancesList().fold( | ||||
| //                onSuccess = { list -> | ||||
| //                    list | ||||
| //                }, | ||||
| //                onFailure = { | ||||
| //                    emptyList() | ||||
| //                } | ||||
| //            ) | ||||
| //            _state.emit( | ||||
| //                getUserUseCase.invoke().fold( | ||||
| //                    onSuccess = { data -> | ||||
| //                        Log.d("uraa", "успех успех ${data.toString()}") | ||||
| // | ||||
| //                        State.Show(data, entranceList) | ||||
| //                    }, | ||||
| //                    onFailure = { error -> | ||||
| //                        Log.d("kaput", error.message.toString()) | ||||
| //                        State.Error(error.message.toString()) | ||||
| //                    } | ||||
| //                ) as State | ||||
| //            ) | ||||
| //            _state.emit(State.Error("о нет ошибка ошибка помогите")) | ||||
| //        } | ||||
| //    } | ||||
| 
 | ||||
|     suspend fun blockUser() { | ||||
|         blockUseCase.invoke().fold( | ||||
|             onSuccess = { data -> | ||||
| @ -86,7 +113,7 @@ class AdminViewModel( | ||||
| 
 | ||||
|     sealed interface State { | ||||
|         data object Loading: State | ||||
|         data class GoToInfo( | ||||
|         data class Show( | ||||
|             val profileInfo : UserEntity, | ||||
|             val entrancesList : List<EntranceEntity> | ||||
|         ) : State | ||||
|  | ||||
| @ -1,5 +1,6 @@ | ||||
| package ru.myitschool.work.ui.profile | ||||
| 
 | ||||
| import android.annotation.SuppressLint | ||||
| import android.content.Intent | ||||
| import android.os.Bundle | ||||
| import android.util.Log | ||||
|  | ||||
| @ -41,7 +41,7 @@ class ProfileViewModel( | ||||
|                 } | ||||
|             ) | ||||
|             _state.emit( | ||||
|                 getUserUseCase.invoke().fold( | ||||
|                 getUserUseCase.invoke(null).fold( | ||||
|                     onSuccess = { data -> | ||||
|                         Log.d("uraa", "успех успех ${data.toString()}") | ||||
|                         State.Show(data, entranceList) | ||||
|  | ||||
| @ -34,7 +34,9 @@ | ||||
|         tools:layout="@layout/fragment_qr_result" > | ||||
|         <action | ||||
|             android:id="@+id/action_fragment_qr_result_to_fragment_profile" | ||||
|             app:destination="@id/fragment_profile" /> | ||||
|             app:destination="@id/fragment_profile" | ||||
|             app:popUpTo="@id/fragment_qr_result" | ||||
|             app:popUpToInclusive="true"/> | ||||
|     </fragment> | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user