diff --git a/app/src/main/java/com/example/hpostesting/data/dao/HemoCubeDao.kt b/app/src/main/java/com/example/hpostesting/data/dao/HemoCubeDao.kt index 0449e6f..c7cb63d 100644 --- a/app/src/main/java/com/example/hpostesting/data/dao/HemoCubeDao.kt +++ b/app/src/main/java/com/example/hpostesting/data/dao/HemoCubeDao.kt @@ -20,4 +20,7 @@ interface HemoCubeDao { @Query("DELETE FROM hemo_cube_test_table WHERE _id = :id") suspend fun deleteById(id: String) + + @Query("UPDATE hemo_cube_test_table SET localFlag = :newValue WHERE _id = :id") + suspend fun updateFieldById(id: String, newValue: Boolean) } \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/presentation/adapter/UserListAdapter.kt b/app/src/main/java/com/example/hpostesting/presentation/adapter/UserListAdapter.kt index 19ceb1f..12059bd 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/adapter/UserListAdapter.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/adapter/UserListAdapter.kt @@ -236,11 +236,4 @@ class UserListAdapter( return diffMillis / (60 * 1000) } - - - - - - - } \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt index 59f39b4..17f2db1 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt @@ -258,7 +258,7 @@ class HomeFragment : Fragment() { } hemoCubeViewModel.allUserData.observe(viewLifecycleOwner) { userDataList -> - val uploadDataVisibility = if (userDataList.isEmpty()) View.GONE else View.VISIBLE + val uploadDataVisibility = if (userDataList.any { !it.localFlag }) View.VISIBLE else View.GONE binding.uploadData.visibility = uploadDataVisibility } } @@ -297,15 +297,13 @@ class HomeFragment : Fragment() { } hemoCubeViewModel.allUserData.observe(viewLifecycleOwner) { userDataList -> - if (userDataList.isEmpty()) { - dialog.dismiss() - } else { - userDataList.forEach { userData -> + userDataList.forEach { userData -> + if (!userData.localFlag) { userData.localFlag = true hemoCubeViewModel.bulkAddResultTestToDb(userData) } - dialog.dismiss() } + dialog.dismiss() } } diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt index 0a691b0..4c36f0f 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt @@ -165,6 +165,10 @@ class HemoCubeFragment : Fragment() { showToast("Internet not available, test details stored locally") startActivity(Intent(requireActivity(), DashboardActivity::class.java)) } + if (result == "Error") { + showToast("Error uploading data, test details stored locally") + startActivity(Intent(requireActivity(), DashboardActivity::class.java)) + } binding.progressBar.visibility = View.GONE } diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt index b215431..53279a5 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt @@ -69,35 +69,32 @@ class HemoCubeViewModel @Inject constructor( } } - - - fun uploadHemoCubeResultToDatabaseforbuffercheckN(isOnline: Boolean, testStatus: Boolean, kitSerial: String?) = - viewModelScope.launch { - if (kitSerial != null) { - testDetails?.kitSerial = kitSerial - } - testDetails?.testStatus = testStatus - - try { - if (isOnline) { - parseData() - addResultTestToDbforbuffercheck() - } else { - parseData() - testDetails?.testTime = SimpleDateFormat( - "yyyy-MM-dd HH:mm:ss", Locale.getDefault() - ).format(Calendar.getInstance().time) - hemoCubeDao.insertAll(testDetails!!) - fireBaseUpload.postValue("Local") - } - } catch (e: Exception) { - Log.e("Testdb", "Upload failed: ${e.message}") - } + fun uploadHemoCubeResultToDatabaseforbuffercheckN( + isOnline: Boolean, + testStatus: Boolean, + kitSerial: String? + ) = viewModelScope.launch { + if (kitSerial != null) { + testDetails?.kitSerial = kitSerial } + testDetails?.testStatus = testStatus - - - + try { + if (isOnline) { + parseData() + addResultTestToDbforbuffercheck() + } else { + parseData() + testDetails?.testTime = SimpleDateFormat( + "yyyy-MM-dd HH:mm:ss", Locale.getDefault() + ).format(Calendar.getInstance().time) + hemoCubeDao.insertAll(testDetails!!) + fireBaseUpload.postValue("Local") + } + } catch (e: Exception) { + Log.e("Testdb", "Upload failed: ${e.message}") + } + } fun getDeviceData(deviceId: String?) = viewModelScope.launch { deviceData.postValue(deviceId?.let { repository.getDeviceDataById(it) }) @@ -142,11 +139,14 @@ class HemoCubeViewModel @Inject constructor( } Log.i("Testdb", "Data uploaded to Firestore successfully") fireBaseUpload.postValue("Success") + testDetails.localFlag = true + hemoCubeDao.insertAll(testDetails) } is Response.Error -> { Log.e("Testdb", "Error uploading data to Firestore: $response") fireBaseUpload.postValue("Error") + hemoCubeDao.insertAll(testDetails) } } } catch (e: Exception) { @@ -195,7 +195,7 @@ class HemoCubeViewModel @Inject constructor( when (repository.addTestToDatabase(userData)) { is Response.Success -> { fireBaseBulkUpload.postValue("Success") - deleteById(userData._id) + updateLocalFlag(userData._id) } else -> { @@ -205,6 +205,10 @@ class HemoCubeViewModel @Inject constructor( } } + private fun updateLocalFlag(userId: String) = viewModelScope.launch { + hemoCubeDao.updateFieldById(id = userId, true) + } + fun deleteById(userId: String) = viewModelScope.launch { hemoCubeDao.deleteById(id = userId) }