This commit is contained in:
sathwikcs
2024-10-18 12:21:11 +05:30
parent 81597efd5c
commit 4d3440fbac

View File

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