From 331726682f70bd07c2966f533b49f707f8a553d0 Mon Sep 17 00:00:00 2001 From: chandrashekhar reddy Date: Tue, 25 Jun 2024 13:06:20 +0530 Subject: [PATCH] new 124 version --- app/google-services.json | 48 ++++++++++++-- .../hpostesting/data/constant/Constants.kt | 8 +-- .../hpostesting/data/constant/DataHolder.kt | 2 + .../data/model/patient/HemoCubeTestData.kt | 4 +- .../presentation/KitScanActivity.kt | 21 +++--- .../adapter/OfflineUserListAdapter.kt | 23 ++++--- .../presentation/dashboard/HomeFragment.kt | 23 ++++--- .../dashboard/ui/LoginFragment.kt | 18 ++++++ .../presentation/hemocube/HemoCubeFragment.kt | 9 +-- .../hemocube/HemoCubeViewModel.kt | 4 +- .../presentation/hemocube/HemocubeActivity.kt | 23 +++++-- app/src/main/res/layout/activity_kit_scan.xml | 2 +- app/src/main/res/layout/fragment_login.xml | 64 ++++++++++++++++++- app/src/main/res/values-hi/arrays.xml | 20 ++++++ app/src/main/res/values-kn/arrays.xml | 20 ++++++ app/src/main/res/values/arrays.xml | 5 ++ 16 files changed, 237 insertions(+), 57 deletions(-) create mode 100644 app/src/main/res/values-hi/arrays.xml create mode 100644 app/src/main/res/values-kn/arrays.xml diff --git a/app/google-services.json b/app/google-services.json index c695c12..1ddf40e 100644 --- a/app/google-services.json +++ b/app/google-services.json @@ -1,13 +1,51 @@ { "project_info": { - "project_number": "630821402019", - "project_id": "iocl-iisc", - "storage_bucket": "iocl-iisc.appspot.com" + "project_number": "243503501547", + "project_id": "iocl-iisc-hpos", + "storage_bucket": "iocl-iisc-hpos.appspot.com" }, "client": [ { "client_info": { - "mobilesdk_app_id": "1:630821402019:android:ed56bae066ac32b51dd616", + "mobilesdk_app_id": "1:243503501547:android:f17de652a3524d047feeae", + "android_client_info": { + "package_name": "com.iocl_iisc.hposqc" + } + }, + "oauth_client": [], + "api_key": [ + { + "current_key": "AIzaSyBPxgcDkZfZMr8cFrkMWkVf1a-MstzWC1k" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [] + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:243503501547:android:e1bb0f338c8448dd7feeae", + "android_client_info": { + "package_name": "in.sminnovations.hposregistration.iocl" + } + }, + "oauth_client": [], + "api_key": [ + { + "current_key": "AIzaSyBPxgcDkZfZMr8cFrkMWkVf1a-MstzWC1k" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [] + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:243503501547:android:18b8b33b2dc3776d7feeae", "android_client_info": { "package_name": "in.sminnovations.hpostesting.iocl" } @@ -15,7 +53,7 @@ "oauth_client": [], "api_key": [ { - "current_key": "AIzaSyABIdxI89eTZ8BqU2cIoJOgJ1lS1cFLCtQ" + "current_key": "AIzaSyBPxgcDkZfZMr8cFrkMWkVf1a-MstzWC1k" } ], "services": { diff --git a/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt b/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt index eeca24e..c87b4c1 100644 --- a/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt +++ b/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt @@ -1066,8 +1066,8 @@ object Constants { ), ) - const val INCUBATION_TIME_MIN = 0 - const val INCUBATION_TIME_MAX = 1400 + const val INCUBATION_TIME_MIN = 15 + const val INCUBATION_TIME_MAX = 30 const val BATTERY_LEVEL_MIN = Int.MIN_VALUE const val PQ_MODE = true @@ -1578,7 +1578,7 @@ object Constants { const val positiveForSickleCellMin10mm = 0.31 const val positiveForSickleCellMax10mm = 0.43 const val sickleCellDiseaseMin10mm = 0.43 - const val sickleCellDiseaseMax10mm = 1.0 + const val sickleCellDiseaseMax10mm = 0.7 //Hemocube for 2mm const val positiveBoderLine2mm1 = 0.8 const val positiveBoderLine2mm2 = 1.1 @@ -1593,7 +1593,7 @@ object Constants { const val positiveForSickleCellMin2mm = 0.31 const val positiveForSickleCellMax2mm = 0.45 const val sickleCellDiseaseMin2mm = 0.45 - const val sickleCellDiseaseMax2mm = 1.0 + const val sickleCellDiseaseMax2mm = 0.7 diff --git a/app/src/main/java/com/example/hpostesting/data/constant/DataHolder.kt b/app/src/main/java/com/example/hpostesting/data/constant/DataHolder.kt index 29b88b3..e525980 100644 --- a/app/src/main/java/com/example/hpostesting/data/constant/DataHolder.kt +++ b/app/src/main/java/com/example/hpostesting/data/constant/DataHolder.kt @@ -38,6 +38,8 @@ object DataHolder { var selectedTest: UserData? = null var hemoCubeTestData: HemoCubeTestData? = null var kitSerial: String = "" + var centerName: String = "" + var district: String = "" var location: UserData.Location? = null var testExp: Boolean = true var hemocubeResult: Double? = null diff --git a/app/src/main/java/com/example/hpostesting/data/model/patient/HemoCubeTestData.kt b/app/src/main/java/com/example/hpostesting/data/model/patient/HemoCubeTestData.kt index 7e5ba07..31db977 100644 --- a/app/src/main/java/com/example/hpostesting/data/model/patient/HemoCubeTestData.kt +++ b/app/src/main/java/com/example/hpostesting/data/model/patient/HemoCubeTestData.kt @@ -107,5 +107,7 @@ data class HemoCubeTestData( var volume: String? = "", var isCSVCreated: Boolean = false, var labName: String? = "", - var cuvetteSize: String? = "" + var cuvetteSize: String? = "", + var district: String? = "", + var centerName: String? = "" ) diff --git a/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt index 5603a0a..31d6301 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt @@ -75,7 +75,7 @@ class KitScanActivity : AppCompatActivity(), IDcsSdkApiDelegate { } Toast.makeText(this, "Selected cuvette size: 2mm", Toast.LENGTH_SHORT).show() binding.nameEditText.setText(contents) - }else if(contents.contains("SC-2-D10/")){ + }else if(contents.contains("SMI/SC-2-D10/")){ with(sharedPreference.edit()) { putString(Constants.CUVETTE_SIZE, "10mm") apply() @@ -178,10 +178,6 @@ class KitScanActivity : AppCompatActivity(), IDcsSdkApiDelegate { // Optionally, show a user-friendly error message to the user // Toast.makeText(applicationContext, "An error occurred", Toast.LENGTH_SHORT).show() } - - - binding.nameEditText.setText("SMI/SC/") - setSupportActionBar(binding.toolbar) binding.btnScanNow.setOnClickListener { @@ -198,7 +194,7 @@ class KitScanActivity : AppCompatActivity(), IDcsSdkApiDelegate { apply() } Toast.makeText(this, "Selected cuvette size: 2mm", Toast.LENGTH_SHORT).show() - }else if(serialNumber.contains("SC-2-D10/")){ + }else if(serialNumber.contains("SMI/SC-2-D10/")){ with(sharedPreference.edit()) { putString(Constants.CUVETTE_SIZE, "10mm") apply() @@ -322,8 +318,17 @@ class KitScanActivity : AppCompatActivity(), IDcsSdkApiDelegate { } private fun isSerialValid(s: String): Boolean { - if (s.length != 17) { - binding.nameEditText.error = getString(R.string.invalid_kit) + if (s.contains("SMI/SC/")) { + if(s.length != 17){ + binding.nameEditText.error = getString(R.string.invalid_kit) + return false + } + }else if(s.contains("SMI/SC-2-D10/")){ + if(s.length != 27){ + binding.nameEditText.error = "Invalid Kit Serial Number, correct example SMI/SC-2-D10/000000/000/000" + return false + } + }else{ return false } return true diff --git a/app/src/main/java/com/example/hpostesting/presentation/adapter/OfflineUserListAdapter.kt b/app/src/main/java/com/example/hpostesting/presentation/adapter/OfflineUserListAdapter.kt index 27916fc..5c3cf73 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/adapter/OfflineUserListAdapter.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/adapter/OfflineUserListAdapter.kt @@ -113,23 +113,22 @@ class OfflineUserListAdapter(private val view: View, private val batLevel: Int,p view.context.getString(R.string.incubation_not_completed), Toast.LENGTH_SHORT ).show() - } else - if (isBetween15And30Minutes(userList.incubationTime) > Constants.INCUBATION_TIME_MAX) { - Toast.makeText( - view.context, - view.context.getString(R.string.incubation_crossed_30_minutes), - Toast.LENGTH_SHORT - ).show() - } else { - DataHolder.selectedTest = UserData( + } else if (isBetween15And30Minutes(userList.incubationTime) > Constants.INCUBATION_TIME_MAX) { + Toast.makeText( + view.context, + view.context.getString(R.string.incubation_crossed_30_minutes), + Toast.LENGTH_SHORT + ).show() + } else { + DataHolder.selectedTest = UserData( sampleid = userList.sampleid, _id = userList._id, bloodGroup = userList.bloodGroup, incubationTime = userList.incubationTime - ) - view.findNavController() + ) + view.findNavController() .navigate(R.id.action_nav_home_to_mainActivity) - } + } } else { Toast.makeText( view.context, 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 264295c..8049f4e 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 @@ -655,10 +655,9 @@ class HomeFragment : Fragment() { val version = pInfo.versionName var labname = sharedPreference.getString(Constants.LABNAME,"") return LoginRequest( - password = password, serialNumber = userID, username = userID, version = version, lab = labname + latitude = DataHolder.location!!.latitude.toString(), longitude = DataHolder.location!!.longitude.toString(), location = DataHolder.location.toString(), password = password, serialNumber = userID, username = userID, version = version, lab = labname ) - }//latitude = DataHolder.location!!.latitude.toString(), longitude = DataHolder.location!!.longitude.toString(), location = DataHolder.location.toString() - + } private fun createCheckUpdateRequestData(): CheckUpdateRequest { val pInfo = requireActivity().packageManager.getPackageInfo( requireActivity().packageName, 0 @@ -1087,15 +1086,15 @@ class HomeFragment : Fragment() { // dialog.dismiss() // } - hemoCubeViewModel.allKitTestData.observe(viewLifecycleOwner) { kitDataList -> - kitDataList.forEach { userData -> - if (!userData.localFlag) { - userData.localFlag = true - hemoCubeViewModel.bulkAddResultKitTestToDb(userData) - } - } - dialog.dismiss() - } +// hemoCubeViewModel.allKitTestData.observe(viewLifecycleOwner) { kitDataList -> +// kitDataList.forEach { userData -> +// if (!userData.localFlag) { +// userData.localFlag = true +// hemoCubeViewModel.bulkAddResultKitTestToDb(userData) +// } +// } +// dialog.dismiss() +// } } private fun downloadLocalDBData(dialog: DialogInterface) { diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/LoginFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/LoginFragment.kt index daa8e9a..18f2662 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/LoginFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/LoginFragment.kt @@ -34,6 +34,7 @@ import androidx.annotation.RequiresApi import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController import com.example.hpostesting.data.constant.Constants +import com.example.hpostesting.data.constant.DataHolder import com.example.hpostesting.util.AppInitializer import `in`.sminnovations.hpostesting.R import `in`.sminnovations.hpostesting.databinding.FragmentLoginBinding @@ -140,6 +141,14 @@ class LoginFragment : Fragment() { } private fun validateCredentials(username: String, password: String): Boolean { var storedPassword = secureStorage.getPassword() +// if (!checkUserName(binding.etName.text.toString())) { +// binding.etName.error = "Name field can't be empty or less than 3 characters" +// return false +// } + if (!checkCenterName(binding.centerName.text.toString())) { + binding.centerName.error = "Center name can't be empty or less than 3 characters" + return false + } if(username == "ADMIN"){ storedPassword = secureStorage.getAdminPassword() } @@ -156,6 +165,8 @@ class LoginFragment : Fragment() { putString(Constants.USER_ID, userId) apply() } + DataHolder.centerName = binding.centerName.text.toString() + DataHolder.district = binding.etDistrict.text.toString() } override fun onDestroyView() { @@ -283,5 +294,12 @@ class LoginFragment : Fragment() { // } // } // } +private fun checkUserName(userName: String): Boolean { + return userName.isNotEmpty() && userName.length >= 3 +} + + private fun checkCenterName(centerName: String): Boolean { + return centerName.isNotEmpty() && centerName.length >= 3 + } } 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 e1f8aa6..ac5a8f3 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 @@ -142,7 +142,7 @@ class HemoCubeFragment : Fragment() { if (isBufferValueAvailable()){ binding.btnPlacebuffer.apply { setBackgroundColor(Color.GREEN) // Set button background color to green - text = "Fresh Buffer" // Change button text to "Buffer Exists" + text = "Refresh Buffer" // Change button text to "Buffer Exists" } }else{ binding.btnPlacebuffer.apply { @@ -896,11 +896,12 @@ class HemoCubeFragment : Fragment() { } } - fun handleBackButtonPress() { - if (isTestOngoing) { + fun handleBackButtonPress(): Boolean { + return if (isTestOngoing) { showToast(R.string.test_go_noback) + true // Indicate that the back press was handled } else { - activity?.onBackPressed() + false // Indicate that the back press was not handled } } 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 15bf83b..4789b1a 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 @@ -415,7 +415,8 @@ class HemoCubeViewModel @Inject constructor( testDetails?.filter = DataHolder.hemoCubeTestData?.filter testDetails?.labName = DataHolder.hemoCubeTestData?.labName testDetails?.cuvetteSize = DataHolder.hemoCubeTestData?.cuvetteSize - + testDetails?.centerName = DataHolder.centerName + testDetails?.district = DataHolder.district } private fun addResultTestToDb() { @@ -488,6 +489,7 @@ class HemoCubeViewModel @Inject constructor( when (repository.addTestToDatabase(userData)) { is Response.Success -> { fireBaseBulkUpload.postValue("Success") + userData.localFlag = true updateLocalFlag(userData._id) } diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemocubeActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemocubeActivity.kt index 5d95c7f..e43453f 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemocubeActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemocubeActivity.kt @@ -196,14 +196,25 @@ open class HemocubeActivity : AppCompatActivity() { } - override fun onBackPressed() { - val fragment = supportFragmentManager.findFragmentById(R.id.fghemocube) - if (fragment is HemoCubeFragment) { - fragment.handleBackButtonPress() - } else { - super.onBackPressed() +// override fun onBackPressed() { +// val fragment = supportFragmentManager.findFragmentById(R.id.fghemocube) +// if (fragment is HemoCubeFragment) { +// fragment.handleBackButtonPress() +// } else { +// super.onBackPressed() +// } +// } +override fun onBackPressed() { + val fragment = supportFragmentManager.findFragmentById(R.id.fghemocube) + if (fragment is HemoCubeFragment) { + if (fragment.handleBackButtonPress()) { + // If the fragment handled the back press, return to avoid calling super.onBackPressed + return } } + // If the fragment did not handle the back press, call the superclass method + super.onBackPressed() +} fun onErrorReported(msg: String) { Toast.makeText(this, msg, Toast.LENGTH_SHORT).show() diff --git a/app/src/main/res/layout/activity_kit_scan.xml b/app/src/main/res/layout/activity_kit_scan.xml index c5435ff..3d1ebd0 100644 --- a/app/src/main/res/layout/activity_kit_scan.xml +++ b/app/src/main/res/layout/activity_kit_scan.xml @@ -128,7 +128,7 @@ android:id="@+id/name_edit_text" android:layout_width="match_parent" android:layout_height="wrap_content" - android:maxLength="17" + android:maxLength="27" android:inputType="text" android:hint="@string/serial_number" /> diff --git a/app/src/main/res/layout/fragment_login.xml b/app/src/main/res/layout/fragment_login.xml index 933b0a1..b8d4c7c 100644 --- a/app/src/main/res/layout/fragment_login.xml +++ b/app/src/main/res/layout/fragment_login.xml @@ -60,7 +60,7 @@ app:layout_constraintTop_toBottomOf="@+id/tv_title" /> + + + + + app:layout_constraintTop_toBottomOf="@id/til_name"> + + + + + + + + + + app:layout_constraintTop_toBottomOf="@+id/et_password" /> diff --git a/app/src/main/res/values-hi/arrays.xml b/app/src/main/res/values-hi/arrays.xml new file mode 100644 index 0000000..69274ba --- /dev/null +++ b/app/src/main/res/values-hi/arrays.xml @@ -0,0 +1,20 @@ + + + + + Mysuru + Kodagu + Chamarajanagar + + \ No newline at end of file diff --git a/app/src/main/res/values-kn/arrays.xml b/app/src/main/res/values-kn/arrays.xml new file mode 100644 index 0000000..69274ba --- /dev/null +++ b/app/src/main/res/values-kn/arrays.xml @@ -0,0 +1,20 @@ + + + + + Mysuru + Kodagu + Chamarajanagar + + \ No newline at end of file diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 7a95d67..44607d4 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -25,5 +25,10 @@ ka + + Mysuru + Kodagu + Chamarajanagar +