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 4c49cc8..4590798 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 @@ -109,20 +109,7 @@ class DatabaseRepository @Inject constructor( } override suspend fun addTestToDatabase(data: UserData?): 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("testData").add(data).await() - Response.Success(data._id) - } catch (e: Exception) { - Firebase.crashlytics.recordException(e) - Response.Error(e) - } + TODO("Not yet implemented") } override suspend fun addTestToDatabaseforBufferCheck(data: BufferCheckData?): Response { @@ -247,4 +234,22 @@ class DatabaseRepository @Inject constructor( override fun addTestToDatabase(testDetails: UserData): Any { TODO("Not yet implemented") } + + override suspend fun addTestToDatabasefornew(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("testData").add(data).await() + Response.Success(data._id) + } catch (e: Exception) { + Firebase.crashlytics.recordException(e) + Response.Error(e) + } + } + } \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/data/repository/Repository.kt b/app/src/main/java/com/example/hpostesting/data/repository/Repository.kt index 8c3f995..6322dc4 100644 --- a/app/src/main/java/com/example/hpostesting/data/repository/Repository.kt +++ b/app/src/main/java/com/example/hpostesting/data/repository/Repository.kt @@ -25,6 +25,7 @@ import okhttp3.ResponseBody interface Repository { suspend fun addTestToDatabase(data: HemoCubeTestData?): Response + suspend fun addTestToDatabasefornew(data: HemoCubeTestData?): Response suspend fun addTestToDatabase(data: UserData?): Response 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 108d8b6..70ae123 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 @@ -180,13 +180,13 @@ class HomeFragment : Fragment() { if (userData != null) { if (!userData.localFlag) { hemoCubeViewModel.bulkAddResultTestToDb(userData) - userData.localFlag = true + } } } // Upload results after processing all userData to avoid duplicates and ensure all modifications are done if (resultList.results?.isNotEmpty() == true) { - hemoCubeViewModel.uploadResult(resultList) + hemoCubeViewModel.uploadResultfornew(resultList) } } @@ -268,35 +268,16 @@ class HomeFragment : Fragment() { var userID = sharedPreference.getString(Constants.DEVICE_ID_API, "").toString() deviceId = sharedPreference.getString(Constants.DEVICE_ID, "").toString() if (userID.isNotEmpty() && password.isNotEmpty()) { - if (!isTokenAvailable) { + if (!isTokenAvailable || isTokenExpired(accessToken)) { hemoCubeViewModel.login(createLoginRequestData(userID, password)) } else { - if (isTokenExpired(accessToken)) { - hemoCubeViewModel.login(createLoginRequestData(userID, password)) - } else { isTokenAvailable = true - hemoCubeViewModel.uploadLogs() hemoCubeViewModel.startPeriodicCheckUpdate() - hemoCubeViewModel.downloadClientCertificate() hemoCubeViewModel.checkUpdate(createCheckUpdateRequestData()) - } } - } else if (deviceId.isNotEmpty()) { + } else if (userID.isEmpty() && password.isEmpty() && deviceId.isNotEmpty()) { fetchDeviceCredentials() - // This code will execute after credentials have been successfully fetched and stored. - userID = sharedPreference.getString("username", "").toString() - password = sharedPreference.getString("password", "").toString() - accessToken = sharedPreference.getString(Constants.ACCESS_TOKEN, "").toString() - if (accessToken.isEmpty()) { - hemoCubeViewModel.login(createLoginRequestData(userID, password)) - } else { - // Continue with your existing logic if the token is not empty. - isTokenAvailable = true - hemoCubeViewModel.uploadLogs() - hemoCubeViewModel.startPeriodicCheckUpdate() - hemoCubeViewModel.checkUpdate(createCheckUpdateRequestData()) - } } else { Toast.makeText( requireContext(), @@ -339,13 +320,6 @@ class HomeFragment : Fragment() { // Toast.LENGTH_SHORT // ).show() - if (!hasLogsBeenUploaded()) { - // Your code to upload logs - // Assuming the upload process is initiated here - - // After successful upload, save the flag - saveUploadSuccessFlag(true) - } } is Result.Error -> { @@ -384,12 +358,12 @@ class HomeFragment : Fragment() { is Result.Error -> { response.exception.let { message -> - Toast.makeText( - activity, - "$message", - Toast.LENGTH_LONG - ) - .show() +// Toast.makeText( +// activity, +// "$message", +// Toast.LENGTH_LONG +// ) +// .show() } } @@ -406,23 +380,21 @@ class HomeFragment : Fragment() { is Result.Success -> { val url = response.data - val fileName = "nats_certificate.zip" val downloadDirectory = "NATS" - val file = downloadFile(url, requireContext(), fileName, downloadDirectory) -// Toast.makeText( -// requireContext(), -// "NATS certificate Downloaded", -// Toast.LENGTH_SHORT -// ).show() + val fileName = "nats_certificate.zip" + val unzipDirectoryPath = requireContext().getExternalFilesDir(null)?.absolutePath + "/$downloadDirectory" + + // Check if the directory with extracted files exists. + val directory = File(unzipDirectoryPath) + if (directory.exists() && directory.isDirectory) { + // Assuming if the directory exists, the certificate has been downloaded and extracted. + // You can add more specific checks here, e.g., checking for specific files within the directory. + Toast.makeText(requireContext(), "NATS certificate already downloaded and extracted.", Toast.LENGTH_SHORT).show() + return@observe + } + val file = downloadFile(url, requireContext(), fileName, downloadDirectory) - val unzipDirectoryPath = - requireContext().getExternalFilesDir(null)?.absolutePath + "/$downloadDirectory" unzip(file.absolutePath, unzipDirectoryPath) -// Toast.makeText( -// requireContext(), -// "NATS certificate Extracted", -// Toast.LENGTH_SHORT -// ).show() } is Result.Error -> { @@ -1105,14 +1077,4 @@ class HomeFragment : Fragment() { return matchResult?.groups?.get(1)?.value ?: "" } - private fun saveUploadSuccessFlag(isSuccess: Boolean) { - sharedPreference = requireActivity().getSharedPreferences("AppPrefs", Context.MODE_PRIVATE) - sharedPreference.edit().putBoolean("LogsUploaded", isSuccess).apply() - } - private fun hasLogsBeenUploaded(): Boolean { - sharedPreference = requireActivity().getSharedPreferences("AppPrefs", Context.MODE_PRIVATE) - return sharedPreference.getBoolean("LogsUploaded", false) - } - - } 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 753d2c9..9e43eb8 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,8 @@ class HemoCubeFragment : Fragment() { ) } handleReadingFinish() + hemoCubeViewModel.uploadLogs() + hemoCubeViewModel.downloadClientCertificate() } is Result.Error -> { 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 3fd4d05..ef9fefa 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 @@ -142,6 +142,14 @@ class HemoCubeViewModel @Inject constructor( } } + + fun uploadResultfornew(molbioV2ResultRequest: MolbioV2ResultRequest) = viewModelScope.launch { + resultUpload.postValue(Result.Loading()) + repository.uploadResults(molbioV2ResultRequest).let { + resultUpload.postValue(it) + } + } + fun checkUpdate(checkUpdateRequest: CheckUpdateRequest) = viewModelScope.launch { checkUpdate.postValue(Result.Loading()) repository.checkUpdate(checkUpdateRequest).let { @@ -363,7 +371,7 @@ class HemoCubeViewModel @Inject constructor( userData.reportUploadTime = SimpleDateFormat( "yyyy-MM-dd HH:mm:ss", Locale.getDefault() ).format(Calendar.getInstance().time) - when (repository.addTestToDatabase(userData)) { + when (repository.addTestToDatabasefornew(userData)) { is Response.Success -> { fireBaseBulkUpload.postValue("Success") updateLocalFlag(userData._id)