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
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")
}
}
}