diff --git a/app/build.gradle b/app/build.gradle
index 939eaa4..2e503fb 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -19,8 +19,8 @@ android {
applicationId "in.sminnovations.hpostesting.dev"
minSdk 21
targetSdk 34
- versionCode 112
- versionName "2.1.112"
+ versionCode 113
+ versionName "2.1.113"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index cd0eb90..773ebcd 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -123,10 +123,11 @@
android:theme="@style/AppTheme.NoActionBar">
-
-
-
-
+
+
+
+
+
- val resultList = MolbioV2ResultRequest(mutableListOf(MolbioV2Result()))
+ hemoCubeViewModel.allUserData.observe(viewLifecycleOwner) { originalUserDataList ->
+ // Ensure the list does not contain duplicates based on _id
+ val userDataList = originalUserDataList.distinctBy { it._id }
+
+ // Initialize the resultList outside of the loop to avoid duplicates
+ val resultList = MolbioV2ResultRequest(mutableListOf())
+ val processedUserIds = mutableSetOf() // To track processed users based on _id
+
userDataList.forEach { userData ->
- if (!userData.molbioFlag && isTokenAvailable && Constants.MOLBIO_INTEGRATION) {
- resultList.results?.add(
- MolbioV2Result(
- rawData = userData,
- analysisId = userData._id,
- analysisDate = SimpleDateFormat(
- "yyyy-MM-dd'T'HH:mm:ssZZZZZ", Locale.getDefault()
- ).format(Calendar.getInstance().time),
- analysisStatus = userData.classificationResult,
- thresholds = Constants.BUFFER_INTENSITY_THRESHOLDS[userData.deviceId].toString(),
- interpretation = userData.classificationResult,
- testId = userData._id,
- testTime = SimpleDateFormat(
- "yyyy-MM-dd'T'HH:mm:ssZZZZZ", Locale.getDefault()
- ).format(Calendar.getInstance().time),
- collectionTime = SimpleDateFormat(
- "yyyy-MM-dd'T'HH:mm:ssZZZZZ", Locale.getDefault()
- ).format(Calendar.getInstance().time),
- expiryTime = SimpleDateFormat(
- "yyyy-MM-dd'T'HH:mm:ssZZZZZ", Locale.getDefault()
- ).format(Calendar.getInstance().time)
+ // Ensure we process each user only once
+ if (!processedUserIds.contains(userData._id)) {
+ if (!userData.molbioFlag && isTokenAvailable && Constants.MOLBIO_INTEGRATION) {
+ val currentTimeFormatted = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ", Locale.getDefault()).format(Calendar.getInstance().time)
+ val bufferIntensityThreshold = Constants.BUFFER_INTENSITY_THRESHOLDS[userData.deviceId]?.toString() ?: "defaultThreshold" // Handle possible nulls safely
+
+ resultList.results?.add(
+ MolbioV2Result(
+ rawData = userData,
+ analysisId = userData._id,
+ analysisDate = currentTimeFormatted,
+ analysisStatus = userData.classificationResult ?: "defaultStatus", // Handle possible nulls
+ thresholds = bufferIntensityThreshold,
+ interpretation = userData.classificationResult ?: "defaultInterpretation", // Handle possible nulls
+ testId = userData._id,
+ testTime = currentTimeFormatted,
+ collectionTime = currentTimeFormatted,
+ expiryTime = currentTimeFormatted
+ )
)
- )
- }
- if (!userData.molbioFlag && isTokenAvailable && Constants.MOLBIO_INTEGRATION) {
- userData.molbioFlag = true
- hemoCubeViewModel.uploadResult(resultList)
- }
+ // Mark this userData as processed to avoid re-processing
+ processedUserIds.add(userData._id)
+ }
- if (!userData.localFlag) {
- userData.localFlag = true
- hemoCubeViewModel.bulkAddResultTestToDb(userData)
+ // Mark the userData for localFlag update, this will be handled in bulk after the loop
+ if (!userData.localFlag) {
+ hemoCubeViewModel.bulkAddResultTestToDb(userData)
+ userData.localFlag = true
+ }
}
-
}
+ // Perform bulk operations after the loop
+ // Set localFlag to true for all usersToUpdate and perform bulk database upd
+
+ // Upload results after processing all userData to avoid duplicates and ensure all modifications are done
+ if (resultList.results?.isNotEmpty() == true) {
+ hemoCubeViewModel.uploadResult(resultList)
+ }
}
} else {
@@ -832,39 +841,6 @@ class HomeFragment : Fragment() {
}
}
- hemoCubeViewModel.allUserData.observe(viewLifecycleOwner) { userDataList ->
- val resultList = MolbioV2ResultRequest(mutableListOf(MolbioV2Result()))
- userDataList.forEach { userData ->
- if (!userData.molbioFlag && isTokenAvailable) {
- resultList.results?.add(
- MolbioV2Result(
- rawData = userData,
- analysisId = userData._id,
- analysisDate = "2024-02-08 16:33:56", //userData.reportUploadTime,
- analysisStatus = userData.classificationResult,
- thresholds = Constants.BUFFER_INTENSITY_THRESHOLDS[userData.deviceId].toString(),
- interpretation = userData.classificationResult,
- testId = userData._id,
- testTime = userData.testTime,
- collectionTime = "2024-02-08 16:33:56",//userData.testTime,
- expiryTime = "2024-02-08 16:33:56",//userData.testTime,
- )
- )
-
- }
-
- if (!userData.localFlag) {
- userData.localFlag = true
- hemoCubeViewModel.bulkAddResultTestToDb(userData)
- }
- if (!userData.molbioFlag && isTokenAvailable && Constants.MOLBIO_INTEGRATION) {
- userData.molbioFlag = true
- hemoCubeViewModel.uploadResult(resultList)
- }
- }
- dialog.dismiss()
- }
-
hemoCubeViewModel.allKitTestData.observe(viewLifecycleOwner) { kitDataList ->
kitDataList.forEach { userData ->
if (!userData.localFlag) {
@@ -875,36 +851,6 @@ class HomeFragment : Fragment() {
dialog.dismiss()
}
- hemoCubeViewModel.allUserData.observe(viewLifecycleOwner) { userDataList ->
- val resultList = MolbioV2ResultRequest(mutableListOf(MolbioV2Result()))
- userDataList.forEach { userData ->
- if (!userData.molbioFlag && isTokenAvailable) {
- resultList.results?.add(
- MolbioV2Result(
- rawData = userData,
- analysisId = userData._id,
- analysisDate = "2024-02-08 16:33:56",//userData.testTime,
- analysisStatus = userData.classificationResult,
- thresholds = Constants.BUFFER_INTENSITY_THRESHOLDS[userData.deviceId].toString(),
- interpretation = userData.classificationResult,
- testId = userData._id,
- testTime = "2024-02-08 16:33:56",//userData.testTime,
- collectionTime = "2024-02-08 16:33:56",//userData.testTime,
- expiryTime = "2024-02-08 16:33:56"//userData.testTime,
- )
- )
- userData.molbioFlag = true
- hemoCubeViewModel.uploadResult(resultList)
- }
-
- if (!userData.localFlag) {
- userData.localFlag = true
- hemoCubeViewModel.bulkAddResultTestToDb(userData)
- }
-
- }
- dialog.dismiss()
- }
}
// private fun downloadLocalDBData(dialog: DialogInterface) {