diff --git a/app/src/main/java/in/sminnovations/attendanceapp/screens/login/viewModel/loginVM.kt b/app/src/main/java/in/sminnovations/attendanceapp/screens/login/viewModel/loginVM.kt index 43829fb..0ce4995 100644 --- a/app/src/main/java/in/sminnovations/attendanceapp/screens/login/viewModel/loginVM.kt +++ b/app/src/main/java/in/sminnovations/attendanceapp/screens/login/viewModel/loginVM.kt @@ -1,11 +1,13 @@ package `in`.sminnovations.attendanceapp.screens.login.viewModel +import android.util.Log import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.google.firebase.firestore.DocumentSnapshot import com.google.firebase.firestore.FirebaseFirestore import dagger.hilt.android.lifecycle.HiltViewModel import `in`.sminnovations.attendanceapp.data.dataStore.Employee +import `in`.sminnovations.attendanceapp.data.dataStore.EmployeeRepository import `in`.sminnovations.attendanceapp.screens.login.data.LoginData import `in`.sminnovations.attendanceapp.screens.login.data.LoginDataStore import kotlinx.coroutines.flow.MutableStateFlow @@ -16,13 +18,14 @@ import javax.inject.Inject @HiltViewModel class LoginViewModel @Inject constructor( - private val loginDataStore: LoginDataStore, private val firebaseFirestore: FirebaseFirestore + private val loginDataStore: LoginDataStore, + private val firebaseFirestore: FirebaseFirestore, + private val employeeRepository: EmployeeRepository ) : ViewModel() { private val _isPasswordError = MutableStateFlow(false) val isPasswordError = _isPasswordError.asStateFlow() - private val _isIDError = MutableStateFlow(false) val isIdError = _isIDError.asStateFlow() @@ -46,7 +49,6 @@ class LoginViewModel @Inject constructor( } } } - } fun login(userId: String, password: String, onLoginSuccess: () -> Unit) { @@ -60,8 +62,8 @@ class LoginViewModel @Inject constructor( viewModelScope.launch { loginDataStore.saveLoginData(userId, password) _isLoggedIn.value = true + fetchEmployeeData(userId) onLoginSuccess() - } } else { _isPasswordError.value = true @@ -72,16 +74,9 @@ class LoginViewModel @Inject constructor( } }.addOnFailureListener { _isIDError.value = true + } } - - } - - fun logout() { - viewModelScope.launch { - loginDataStore.clearLoginData() - _isLoggedIn.value = false - } } @@ -90,7 +85,7 @@ class LoginViewModel @Inject constructor( androidID = getString("AndroidID") ?: "", dateOfJoining = getString("DateOfJoining") ?: "", dateOfLeaving = getString("DateOfLeaving") ?: "", - designation = getString("Designation") ?: "Android Developer", + designation = getString("Designation") ?: "", employeeStatus = getBoolean("EmployeeStatus") ?: true, id = getString("Id") ?: "", name = getString("Name") ?: "", @@ -100,14 +95,19 @@ class LoginViewModel @Inject constructor( ) } - suspend fun fetchEmployeeData(employeeId: String): Employee? { - val db = FirebaseFirestore.getInstance() - return try { - val document = db.collection("employees").document(employeeId).get().await() - document.toEmployee() - } catch (e: Exception) { - e.printStackTrace() - null + private suspend fun fetchEmployeeData(employeeId: String) { + val db = firebaseFirestore + val document = db.collection("employees").document(employeeId).get().await() + + if (document.exists()) { + val savedata = document.toEmployee() + Log.d("FetchSuccess", "Fetched Employee Data: $savedata") + employeeRepository.saveEmployeeData(savedata) + } else { + Log.d("FetchError", "Document does not exist for employee ID: $employeeId") } } + + + }