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