From 8e675408337b3db4dc34bec474ad11b534ea7873 Mon Sep 17 00:00:00 2001 From: Mariya Date: Tue, 19 Dec 2023 17:12:11 +0530 Subject: [PATCH] Fixed issued related to csv file downloading --- .../hpostesting/data/dao/MyDataBase.kt | 2 +- .../presentation/dashboard/HomeFragment.kt | 61 ++++++++++++++----- .../hemocube/HemoCubeViewModel.kt | 1 + app/src/main/res/layout/fragment_home.xml | 1 + 4 files changed, 48 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt b/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt index 12a5bc4..339d58d 100644 --- a/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt +++ b/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt @@ -11,7 +11,7 @@ import com.example.hpostesting.data.model.patient.HemoCubeTestData import com.google.android.datatransport.runtime.dagger.Provides import javax.inject.Singleton -@Database(entities = [UserData::class, HemoCubeTestData::class, DeviceData::class], version = 4, exportSchema = false) +@Database(entities = [UserData::class, HemoCubeTestData::class, DeviceData::class], version = 5, exportSchema = false) @TypeConverters(Converters::class) abstract class MyDatabase : RoomDatabase() { abstract fun userDao(): UserDao 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 c8fe39d..b41dd7f 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 @@ -87,6 +87,7 @@ class HomeFragment : Fragment() { adapter = OfflineUserListAdapter(binding.root, batLevel) adapter.differ.submitList(userList) binding.rvOrderOffline.adapter = adapter + } } viewModel.networkStatusLiveData?.observe(viewLifecycleOwner) { isConnected -> @@ -118,12 +119,31 @@ class HomeFragment : Fragment() { binding.btnLogout.setOnClickListener { logoutUser(requireContext()) } + + binding.uploadData.setOnClickListener { showUploadDialog(requireContext()) } + hemoCubeViewModel.allUserData.observe(viewLifecycleOwner) { userData -> - binding.btnSaveLocal.setOnClickListener { - showDownloadDialog(requireContext()) + val btnSaveLocalVisibility = + if (userData.any { it.testStatus == true }) View.VISIBLE else View.GONE + + binding.btnSaveLocal.visibility = btnSaveLocalVisibility + + binding.btnSaveLocal.setOnClickListener { + if (btnSaveLocalVisibility == View.VISIBLE) { + // Execute the action when the button is visible (testStatus is true for at least one user) + showDownloadDialog(requireContext()) + } else { + // Handle the case when the button is not visible + Toast.makeText( + requireContext(), + "No test details stored locally", + Toast.LENGTH_SHORT + ).show() + } + } } binding.btnNewKit.setOnClickListener { with(sharedPreference.edit()) { @@ -311,7 +331,9 @@ class HomeFragment : Fragment() { hemoCubeViewModel.allUserData.observe(viewLifecycleOwner) { userDataList -> val uploadDataVisibility = - if (userDataList.any { !it.localFlag && it.testStatus == true}) View.VISIBLE else View.GONE + if (userDataList.any { + !it.localFlag && it.testStatus == true}) + View.VISIBLE else View.GONE binding.uploadData.visibility = uploadDataVisibility } } @@ -427,25 +449,32 @@ class HomeFragment : Fragment() { val downloadList = mutableListOf() userDataList.forEach { userData -> + if(userData.testStatus == true) { // if (!userData.isCSVCreated) { downloadList.add(userData) // Add the userData to downloadList + } // } } - if (downloadList.isNotEmpty()) { - // Call ViewModel function to create CSV with filtered data - hemoCubeViewModel.createCSV(downloadList, requireContext()) - csvDownloaded = true - Toast.makeText( - requireContext(), - "CSV file downloaded successfully", - Toast.LENGTH_SHORT - ).show() - } else { - Toast.makeText(requireContext(), "No data to download", Toast.LENGTH_SHORT) - .show() + if (downloadList.isNotEmpty()) { + // Call ViewModel function to create CSV with filtered data + hemoCubeViewModel.createCSV(downloadList, requireContext()) + csvDownloaded = true + Toast.makeText( + requireContext(), + "CSV file downloaded successfully", + Toast.LENGTH_SHORT + ).show() + } else { + Toast.makeText( + requireContext(), + "No data to download", + Toast.LENGTH_SHORT + ) + .show() + } } - } + } catch (e: Exception) { e.printStackTrace() Toast.makeText(requireContext(), "Error downloading CSV file", Toast.LENGTH_SHORT).show() 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 939e357..9c2a2cb 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 @@ -107,6 +107,7 @@ class HemoCubeViewModel @Inject constructor( testDetails?.deviceRatio = DataHolder.hemoCubeTestData?.deviceRatio testDetails?.calculatedRatio = DataHolder.hemoCubeTestData?.calculatedRatio testDetails?.coefficients = DataHolder.hemoCubeTestData?.coefficients + testDetails?.incubationTime = DataHolder.hemoCubeTestData?.incubationTime.toString() testDetails?.name = DataHolder.hemoCubeTestData?.name.toString() testDetails?.birthYear = DataHolder.hemoCubeTestData?.birthYear.toString() testDetails?.userImageURL = DataHolder.hemoCubeTestData?.userImageURL.toString() diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index c56295c..e62ff1f 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -107,6 +107,7 @@ android:layout_height="30dp" android:layout_marginEnd="10dp" android:src="@drawable/downloads" + android:visibility="gone" app:layout_constraintBottom_toBottomOf="@+id/rv_order_offline" app:layout_constraintStart_toStartOf="parent" />