login
This commit is contained in:
@@ -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")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user