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/data/repository/DatabaseRepository.kt b/app/src/main/java/com/example/hpostesting/data/repository/DatabaseRepository.kt index 204273e..f9bcee5 100644 --- a/app/src/main/java/com/example/hpostesting/data/repository/DatabaseRepository.kt +++ b/app/src/main/java/com/example/hpostesting/data/repository/DatabaseRepository.kt @@ -52,12 +52,6 @@ class DatabaseRepository : Repository { suspend fun addTestToDatabaseforBufferCheck(data: HemoCubeTestData?): Response { return try { - val userdata = db.collection("patientData").whereEqualTo("_id", data!!._id).get().await() - if (userdata.documents.isNotEmpty()) { - userdata.documents.forEach { - db.collection("patientData").document(it.id).update("testStatus", true) - } - } db.collection("buffers").add(data!!).await() Response.Success(data!!._id) } catch (e: Exception) { 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/buffercheck/HemoCubeBufferCheckFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemoCubeBufferCheckFragment.kt index ed06f03..81ec232 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemoCubeBufferCheckFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemoCubeBufferCheckFragment.kt @@ -142,8 +142,6 @@ class HemoCubeBufferCheckFragment : Fragment() { resultData += fullReadOutput.toString() when { - stringData.contains("ERROR 500") -> showError500Dialog() - stringData.contains("ERROR 501") -> showError501Dialog() stringData.contains("#Buffer Completed") -> showStartSampleDialog() stringData.contains("#Sample Completed") -> { activity?.runOnUiThread { @@ -172,40 +170,6 @@ class HemoCubeBufferCheckFragment : Fragment() { } } - - private fun showError500Dialog() { - UIUtils.createAlertDialog(requireContext(), - "BUFFER ERROR", - "Do you want to continue with existing buffer?", - getString(R.string.noo), - "Yes", - object : MyDialogListener { - override fun onClickNegativeButton() {} - - override fun onClickPositiveButton() { - listenToHemoCube() - startBufferProcess() - } - }) - } - - - private fun showError501Dialog() { - UIUtils.createAlertDialog(requireContext(), - "SAMPLE ERROR", - "Do you want to continue with Sample?", - getString(R.string.noo), - "Yes", - object : MyDialogListener { - override fun onClickNegativeButton() {} - - override fun onClickPositiveButton() { - listenToHemoCube() - startSampleProcess() - } - }) - } - private fun showStartSampleDialog() { activity?.runOnUiThread { UIUtils.createAlertDialog(requireContext(), diff --git a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemoCubeBufferCheckViewModel.kt b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemoCubeBufferCheckViewModel.kt index cd7a588..4eb5740 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemoCubeBufferCheckViewModel.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemoCubeBufferCheckViewModel.kt @@ -166,11 +166,6 @@ class HemoCubeBufferCheckViewModel @Inject constructor( when (val response = repository.addTestToDatabaseforBufferCheck(testDetails)) { is Response.Success -> { - val kitCount = sharedPreference.getInt(Constants.KIT_COUNT, 0) - with(sharedPreference.edit()) { - putInt(Constants.KIT_COUNT, kitCount.plus(1)) - apply() - } Log.i("Testdb", "Data uploaded to Firestore successfully") fireBaseUpload.postValue("Success") } diff --git a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt index 6375d39..126936b 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt @@ -32,7 +32,7 @@ import `in`.sminnovations.hpostesting.databinding.ActivityHemocubeBinding @AndroidEntryPoint open class HemocubeBufferCheckActivity : AppCompatActivity() { private lateinit var binding: ActivityHemocubeBinding - private val viewModel by viewModels() + private val viewModel by viewModels() private var myMenu: Menu? = null private lateinit var mDriver: UsbSerialDriver 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 8e34ace..a97e348 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 @@ -161,6 +161,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) } diff --git a/app/src/main/res/layout/activity_buffer_check.xml b/app/src/main/res/layout/activity_buffer_check.xml new file mode 100644 index 0000000..cb786da --- /dev/null +++ b/app/src/main/res/layout/activity_buffer_check.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_hemo_cube_buffer_check.xml b/app/src/main/res/layout/fragment_hemo_cube_buffer_check.xml new file mode 100644 index 0000000..5c5c357 --- /dev/null +++ b/app/src/main/res/layout/fragment_hemo_cube_buffer_check.xml @@ -0,0 +1,187 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +