added new kit button and logout button for offline test

This commit is contained in:
Mariya
2024-03-05 14:44:06 +05:30
parent 1aaf2ba485
commit ba9564d867
3 changed files with 146 additions and 99 deletions

View File

@@ -151,7 +151,7 @@ class HomeFragment : Fragment() {
} }
// Now re-subscribe to allUserData // Now re-subscribe to allUserData
hemoCubeViewModel.allUserData.observe(viewLifecycleOwner) { originalUserDataList -> hemoCubeViewModel.allLocalData.observe(viewLifecycleOwner) { originalUserDataList ->
Log.d("LOCAL_DB OBSERVE", "OBSERVE CALLED") Log.d("LOCAL_DB OBSERVE", "OBSERVE CALLED")
@@ -237,30 +237,34 @@ class HomeFragment : Fragment() {
logoutUser(requireContext()) logoutUser(requireContext())
} }
binding.btnLogout1.setOnClickListener {
logoutUser(requireContext())
}
binding.uploadData.setOnClickListener { binding.uploadData.setOnClickListener {
// showUploadDialog(requireContext()) // showUploadDialog(requireContext())
} }
hemoCubeViewModel.allUserData.observe(viewLifecycleOwner) { userData -> // hemoCubeViewModel.allUserData.observe(viewLifecycleOwner) { userData ->
//
val btnSaveLocalVisibility = // val btnSaveLocalVisibility =
if (userData.any { it.testStatus == true }) View.GONE else View.GONE // if (userData.any { it.testStatus == true }) View.GONE else View.GONE
//
binding.downloadCSV.visibility = btnSaveLocalVisibility // binding.downloadCSV.visibility = btnSaveLocalVisibility
//
binding.downloadCSV.setOnClickListener { // binding.downloadCSV.setOnClickListener {
if (btnSaveLocalVisibility == View.VISIBLE) { // if (btnSaveLocalVisibility == View.VISIBLE) {
// Execute the action when the button is visible (testStatus is true for at least one user) // // Execute the action when the button is visible (testStatus is true for at least one user)
showDownloadDialog(requireContext()) // showDownloadDialog(requireContext())
} else { // } else {
// Handle the case when the button is not visible // // Handle the case when the button is not visible
Toast.makeText( // Toast.makeText(
requireContext(), // requireContext(),
"No test details stored locally", // "No test details stored locally",
Toast.LENGTH_SHORT // Toast.LENGTH_SHORT
).show() // ).show()
} // }
} // }
} // }
binding.btnNewKit.setOnClickListener { binding.btnNewKit.setOnClickListener {
@@ -272,6 +276,17 @@ class HomeFragment : Fragment() {
startActivity(Intent(requireContext(), KitScanActivity::class.java)) startActivity(Intent(requireContext(), KitScanActivity::class.java))
requireActivity().finish() requireActivity().finish()
} }
binding.btnNewKitoffline.setOnClickListener {
with(sharedPreference.edit()) {
putString(Constants.KIT_NUMBER, "")
putInt(Constants.KIT_COUNT, 0)
apply()
}
startActivity(Intent(requireContext(), KitScanActivity::class.java))
requireActivity().finish()
}
binding.btnQuickCapture.setOnClickListener { binding.btnQuickCapture.setOnClickListener {
DataHolder.hemoCubeTestData = HemoCubeTestData() DataHolder.hemoCubeTestData = HemoCubeTestData()
@@ -847,16 +862,16 @@ class HomeFragment : Fragment() {
} }
private fun checkForLocalDBData() { private fun checkForLocalDBData() {
viewModel.allUserData.observe(viewLifecycleOwner) { userDataList -> // viewModel.allUserData.observe(viewLifecycleOwner) { userDataList ->
val uploadDataVisibility = if (userDataList.isEmpty()) View.GONE else View.VISIBLE // val uploadDataVisibility = if (userDataList.isEmpty()) View.GONE else View.VISIBLE
binding.uploadData.visibility = uploadDataVisibility // binding.uploadData.visibility = uploadDataVisibility
} // }
//
hemoCubeViewModel.allUserData.observe(viewLifecycleOwner) { userDataList -> // hemoCubeViewModel.allUserData.observe(viewLifecycleOwner) { userDataList ->
val uploadDataVisibility = // val uploadDataVisibility =
if (userDataList.any { !it.localFlag && !it.molbioFlag && it.testStatus == true }) View.VISIBLE else View.GONE // if (userDataList.any { !it.localFlag && !it.molbioFlag && it.testStatus == true }) View.VISIBLE else View.GONE
binding.uploadData.visibility = uploadDataVisibility // binding.uploadData.visibility = uploadDataVisibility
} // }
hemoCubeViewModel.allKitTestData.observe(viewLifecycleOwner) { bufferData -> hemoCubeViewModel.allKitTestData.observe(viewLifecycleOwner) { bufferData ->
val uploadDataVisibility = val uploadDataVisibility =
@@ -866,11 +881,11 @@ class HomeFragment : Fragment() {
} }
private fun checkUnprocessedCSVData() { private fun checkUnprocessedCSVData() {
hemoCubeViewModel.allUserData.observe(viewLifecycleOwner) { userDataList -> // hemoCubeViewModel.allUserData.observe(viewLifecycleOwner) { userDataList ->
val downloadDataVisibility = // val downloadDataVisibility =
if (userDataList.any { !it.isCSVCreated && it.testStatus == true }) View.GONE else View.GONE // if (userDataList.any { !it.isCSVCreated && it.testStatus == true }) View.GONE else View.GONE
binding.downloadCSV.visibility = downloadDataVisibility // binding.downloadCSV.visibility = downloadDataVisibility
} // }
} }
private fun sanitizeDoubleValues(hemoCubeTestData: HemoCubeTestData): HemoCubeTestData { private fun sanitizeDoubleValues(hemoCubeTestData: HemoCubeTestData): HemoCubeTestData {
@@ -923,23 +938,23 @@ class HomeFragment : Fragment() {
// } // }
private fun uploadLocalDBData(dialog: DialogInterface) { private fun uploadLocalDBData(dialog: DialogInterface) {
viewModel.allUserData.observe(viewLifecycleOwner) { userDataList -> // viewModel.allUserData.observe(viewLifecycleOwner) { userDataList ->
if (userDataList.isEmpty()) { // if (userDataList.isEmpty()) {
dialog.dismiss() // dialog.dismiss()
} else { // } else {
userDataList.forEach { userData -> // userDataList.forEach { userData ->
viewModel.bulkUploadResultToDatabase(userData) // viewModel.bulkUploadResultToDatabase(userData)
viewModel.deleteById(userData._id) // viewModel.deleteById(userData._id)
} // }
dialog.dismiss() // dialog.dismiss()
Toast.makeText( // Toast.makeText(
requireContext(), R.string.upload_success_message, Toast.LENGTH_SHORT // requireContext(), R.string.upload_success_message, Toast.LENGTH_SHORT
).show() // ).show()
} // }
} // }
hemoCubeViewModel.allUserData.observe(viewLifecycleOwner) { userDataList -> // hemoCubeViewModel.allUserData.observe(viewLifecycleOwner) { userDataList ->
val resultList = MolbioV2ResultRequest(mutableListOf(MolbioV2Result())) // val resultList = MolbioV2ResultRequest(mutableListOf(MolbioV2Result()))
// userDataList.forEach { userData -> // userDataList.forEach { userData ->
// if (!userData.molbioFlag && isTokenAvailable) { // if (!userData.molbioFlag && isTokenAvailable) {
// resultList.results?.add( // resultList.results?.add(
@@ -968,8 +983,8 @@ class HomeFragment : Fragment() {
// hemoCubeViewModel.uploadResult(resultList) // hemoCubeViewModel.uploadResult(resultList)
// } // }
// } // }
dialog.dismiss() // dialog.dismiss()
} // }
hemoCubeViewModel.allKitTestData.observe(viewLifecycleOwner) { kitDataList -> hemoCubeViewModel.allKitTestData.observe(viewLifecycleOwner) { kitDataList ->
kitDataList.forEach { userData -> kitDataList.forEach { userData ->
@@ -1044,7 +1059,7 @@ class HomeFragment : Fragment() {
builder.setMessage(R.string.download_db_registration_message) builder.setMessage(R.string.download_db_registration_message)
builder.setPositiveButton(R.string.downloadcsv) { dialog, _ -> builder.setPositiveButton(R.string.downloadcsv) { dialog, _ ->
downloadLocalDBData(dialog) // downloadLocalDBData(dialog)
} }
builder.setNegativeButton(R.string.cancel) { dialog, _ -> builder.setNegativeButton(R.string.cancel) { dialog, _ ->
@@ -1055,49 +1070,49 @@ class HomeFragment : Fragment() {
dialog.show() dialog.show()
} }
private fun downloadLocalDBData(dialog: DialogInterface) { // private fun downloadLocalDBData(dialog: DialogInterface) {
var csvDownloaded = false // var csvDownloaded = false
hemoCubeViewModel.allUserData.observe(viewLifecycleOwner) { userDataList -> // hemoCubeViewModel.allUserData.observe(viewLifecycleOwner) { userDataList ->
try { // try {
if (!csvDownloaded) { // if (!csvDownloaded) {
val downloadList = mutableListOf<HemoCubeTestData>() // val downloadList = mutableListOf<HemoCubeTestData>()
//
userDataList.forEach { userData -> // userDataList.forEach { userData ->
if (userData.testStatus == true) { // if (userData.testStatus == true) {
// if (!userData.isCSVCreated) { //// if (!userData.isCSVCreated) {
downloadList.add(userData) // Add the userData to downloadList // downloadList.add(userData) // Add the userData to downloadList
}
// } // }
} //// }
// }
if (downloadList.isNotEmpty()) { //
// Call ViewModel function to create CSV with filtered data // if (downloadList.isNotEmpty()) {
hemoCubeViewModel.createCSV(downloadList, requireContext()) // // Call ViewModel function to create CSV with filtered data
csvDownloaded = true // hemoCubeViewModel.createCSV(downloadList, requireContext())
Toast.makeText( // csvDownloaded = true
requireContext(), // Toast.makeText(
"CSV file downloaded successfully", // requireContext(),
Toast.LENGTH_SHORT // "CSV file downloaded successfully",
).show() // Toast.LENGTH_SHORT
} else { // ).show()
Toast.makeText( // } else {
requireContext(), // Toast.makeText(
"No data to download", // requireContext(),
Toast.LENGTH_SHORT // "No data to download",
) // Toast.LENGTH_SHORT
.show() // )
} // .show()
} // }
// }
} catch (e: Exception) { //
e.printStackTrace() // } catch (e: Exception) {
Toast.makeText(requireContext(), "Error downloading CSV file", Toast.LENGTH_SHORT) // e.printStackTrace()
.show() // Toast.makeText(requireContext(), "Error downloading CSV file", Toast.LENGTH_SHORT)
} finally { // .show()
dialog.dismiss() // } finally {
} // dialog.dismiss()
} // }
} // }
// }
private fun getDeviceId() { private fun getDeviceId() {
Log.d("HomeFragmentUSb","getDeviceId") Log.d("HomeFragmentUSb","getDeviceId")

View File

@@ -89,6 +89,7 @@ class HemoCubeViewModel @Inject constructor(
private val _networkStatusLiveData = NetworkStatusLiveData(context) private val _networkStatusLiveData = NetworkStatusLiveData(context)
val allUserData = hemoCubeDao.getAll() val allUserData = hemoCubeDao.getAll()
val allLocalData = hemoCubeDao.getAll()
val allPendingUserToUpload = MutableLiveData<List<HemoCubeTestData>>() val allPendingUserToUpload = MutableLiveData<List<HemoCubeTestData>>()
val allKitTestData = hemoCubeBufferDao.getAll() val allKitTestData = hemoCubeBufferDao.getAll()
val deviceData = MutableLiveData<DeviceData?>() val deviceData = MutableLiveData<DeviceData?>()

View File

@@ -38,10 +38,20 @@
android:visibility="gone" android:visibility="gone"
android:padding="24dp"> android:padding="24dp">
<ImageView
android:id="@+id/btnLogout1"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginEnd="10dp"
android:src="@drawable/baseline_logout_24"
app:layout_constraintTop_toTopOf="@+id/internetNotAvailableCL"
app:layout_constraintEnd_toEndOf="parent"
/>
<TextView <TextView
android:id="@+id/tv_title_no_internet" android:id="@+id/tv_title_no_internet"
style="@style/title1" style="@style/title1"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center"
android:layout_marginTop="24dp" android:layout_marginTop="24dp"
@@ -125,6 +135,27 @@
<!-- app:layout_constraintBottom_toBottomOf="@+id/rv_order_offline"--> <!-- app:layout_constraintBottom_toBottomOf="@+id/rv_order_offline"-->
<!-- app:layout_constraintStart_toStartOf="parent" />--> <!-- app:layout_constraintStart_toStartOf="parent" />-->
<TextView
android:id="@+id/label1"
style="@style/title1_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/new_kit"
app:layout_constraintBottom_toTopOf="@+id/btnNewKitoffline"
app:layout_constraintEnd_toEndOf="parent" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/btnNewKitoffline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:backgroundTint="@color/primary"
android:contentDescription="@string/new_kit"
android:src="@drawable/ic_add"
app:elevation="1dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout