From 0b52dc42b0bc869276a689d51cd27e7c1d743551 Mon Sep 17 00:00:00 2001 From: Kaif Date: Mon, 16 Oct 2023 14:03:28 +0530 Subject: [PATCH] Fixed merge config --- .../presentation/adapter/UserListAdapter.kt | 23 +- .../HemoCubeBufferCheckFragment.kt | 25 +-- .../HemoCubeBufferCheckViewModel.kt | 206 ------------------ .../HemocubeBufferCheckActivity.kt | 2 +- .../presentation/dashboard/HomeFragment.kt | 4 +- 5 files changed, 28 insertions(+), 232 deletions(-) delete mode 100644 app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemoCubeBufferCheckViewModel.kt diff --git a/app/src/main/java/com/example/hpostesting/presentation/adapter/UserListAdapter.kt b/app/src/main/java/com/example/hpostesting/presentation/adapter/UserListAdapter.kt index 12059bd..cd52b4d 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/adapter/UserListAdapter.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/adapter/UserListAdapter.kt @@ -3,6 +3,8 @@ package com.example.hpostesting.presentation.adapter import android.annotation.SuppressLint import android.app.AlertDialog import android.content.Context +import android.content.Context.INPUT_METHOD_SERVICE +import android.view.inputmethod.InputMethodManager import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -14,8 +16,6 @@ import com.example.hpostesting.data.DataHolder import com.example.hpostesting.data.model.patient.UserData import com.firebase.ui.firestore.FirestoreRecyclerAdapter import com.firebase.ui.firestore.FirestoreRecyclerOptions -import com.google.firebase.firestore.ktx.firestore -import com.google.firebase.ktx.Firebase import `in`.sminnovations.hpostesting.R import `in`.sminnovations.hpostesting.databinding.UserItemViewBinding import java.text.SimpleDateFormat @@ -23,8 +23,9 @@ import java.util.Calendar import java.util.Date import java.util.Locale import android.widget.AutoCompleteTextView -import com.example.hpostesting.data.model.patient.HemoCubeTestData -import com.example.hpostesting.data.model.patient.toHemoCubeTestData +import androidx.core.content.ContextCompat.getSystemService +import androidx.core.content.getSystemService +import androidx.fragment.app.FragmentActivity import com.example.hpostesting.presentation.hemocube.HemoCubeViewModel import com.google.firebase.firestore.FirebaseFirestore @@ -35,7 +36,7 @@ class UserListAdapter( options: FirestoreRecyclerOptions, private val view: View, private val batLevel: Int, - private val testDetails: HemoCubeTestData? = DataHolder.selectedTest?.toHemoCubeTestData(), + private val requireActivity: FragmentActivity ) : FirestoreRecyclerAdapter(options) { class OrderItemViewHolder(val binding: UserItemViewBinding) : @@ -76,6 +77,18 @@ class UserListAdapter( } holder.binding.btnBlood.setOnClickListener { + val view: View? = requireActivity.currentFocus + + // on below line checking if view is not null. + if (view != null) { + // on below line we are creating a variable + // for input manager and initializing it. + val inputMethodManager = + context.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager + + // on below line hiding our keyboard. + inputMethodManager.hideSoftInputFromWindow(view.windowToken, 0) + } val inflater = LayoutInflater.from(context) val dialogView = inflater.inflate(R.layout.dialog_custom, null) diff --git a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemoCubeBufferCheckFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemoCubeBufferCheckFragment.kt index df8555d..fee2c2a 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemoCubeBufferCheckFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemoCubeBufferCheckFragment.kt @@ -7,7 +7,9 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.view.inputmethod.InputMethodManager import android.widget.Toast +import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.lifecycle.MutableLiveData @@ -19,6 +21,7 @@ import com.example.hpostesting.data.model.patient.DeviceData import com.example.hpostesting.data.model.patient.toHemoCubeTestData import com.example.hpostesting.presentation.UsbServiceListener import com.example.hpostesting.presentation.dashboard.DashboardActivity +import com.example.hpostesting.presentation.hemocube.HemoCubeViewModel import com.example.hpostesting.presentation.utils.MyDialogListener import com.example.hpostesting.presentation.utils.UIUtils import com.google.firebase.crashlytics.ktx.crashlytics @@ -30,7 +33,7 @@ import kotlin.math.log10 class HemoCubeBufferCheckFragment : Fragment() { private lateinit var binding: FragmentHemoCubeReferenceBinding - private val hemoCubeBufferCheckViewModel: HemoCubeBufferCheckViewModel by activityViewModels() + private val hemoCubeViewModel: HemoCubeViewModel by activityViewModels() private lateinit var sharedPreferences: SharedPreferences private var currentDeviceData: DeviceData? = null private var resultData: String = "" @@ -68,9 +71,6 @@ class HemoCubeBufferCheckFragment : Fragment() { Toast.makeText(context, "Invalid KIT Number", Toast.LENGTH_LONG).show() return@setOnClickListener } - hemoCubeBufferCheckViewModel.uploadHemoCubeResultToDatabaseforbuffercheckN( - isOnline, true, sharedPreferences.getString(Constants.KIT_NUMBER, "") - ) activity?.runOnUiThread { binding.tvSubtitle2.visibility = View.GONE binding.etAbhaId.visibility = View.GONE @@ -94,24 +94,13 @@ class HemoCubeBufferCheckFragment : Fragment() { } private fun observeViewModel() { - hemoCubeBufferCheckViewModel.fireBaseUpload.observe(viewLifecycleOwner) { result -> - if (result == "Success") { - showToast("Test Results Uploaded Successfully") - } - if (result == "Local") { - showToast("Internet not available, test details stored locally") - startActivity(Intent(requireActivity(), DashboardActivity::class.java)) - } - - binding.progressBar.visibility = View.GONE - } - hemoCubeBufferCheckViewModel.deviceData.observe(viewLifecycleOwner) { + hemoCubeViewModel.deviceData.observe(viewLifecycleOwner) { currentDeviceData = it } - hemoCubeBufferCheckViewModel.networkStatusLiveData.observe(viewLifecycleOwner) { isNetworkAvailable -> + hemoCubeViewModel.networkStatusLiveData.observe(viewLifecycleOwner) { isNetworkAvailable -> if (isNetworkAvailable) { - hemoCubeBufferCheckViewModel.getDeviceData(sharedPreferences.getString(Constants.USER_ID, "")) + hemoCubeViewModel.getDeviceData(sharedPreferences.getString(Constants.USER_ID, "")) } else { Toast.makeText( requireContext(), "No internet connection avaiable", Toast.LENGTH_SHORT diff --git a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemoCubeBufferCheckViewModel.kt b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemoCubeBufferCheckViewModel.kt deleted file mode 100644 index 4eb5740..0000000 --- a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemoCubeBufferCheckViewModel.kt +++ /dev/null @@ -1,206 +0,0 @@ -package com.example.hpostesting.presentation.buffercheck - -import android.content.Context -import android.content.SharedPreferences -import android.util.Log -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope -import com.example.hpostesting.data.DataHolder -import com.example.hpostesting.data.NetworkStatusLiveData -import com.example.hpostesting.data.constant.Constants -import com.example.hpostesting.data.dao.HemoCubeDao -import com.example.hpostesting.data.model.Response -import com.example.hpostesting.data.model.patient.DeviceData -import com.example.hpostesting.data.model.patient.HemoCubeTestData -import com.example.hpostesting.data.model.patient.toHemoCubeTestData -import com.example.hpostesting.data.repository.DatabaseRepository -import dagger.hilt.android.lifecycle.HiltViewModel -import kotlinx.coroutines.launch -import java.text.SimpleDateFormat -import java.util.Calendar -import java.util.Locale -import javax.inject.Inject - -@HiltViewModel -class HemoCubeBufferCheckViewModel @Inject constructor( - private val hemoCubeDao: HemoCubeDao, - private val repository: DatabaseRepository, - context: Context, -) : ViewModel() { - var isServiceConnected = false - val progressBar = MutableLiveData(false) - val testDetails = DataHolder.selectedTest?.toHemoCubeTestData() - val messages = MutableLiveData() - private val sharedPreference: SharedPreferences = - context.getSharedPreferences("PREFERENCE_NAME", Context.MODE_PRIVATE) - - // Get the device ID of the device you want to retrieve data for (e.g., the first device in the list) - - private val _networkStatusLiveData = NetworkStatusLiveData(context) - val allUserData = hemoCubeDao.getAll() - val deviceData = MutableLiveData() - val networkStatusLiveData: LiveData - get() = _networkStatusLiveData - val fireBaseUpload = MutableLiveData() - val fireBaseBulkUpload = MutableLiveData() - fun uploadHemoCubeResultToDatabase(isOnline: Boolean, testStatus: Boolean, kitSerial: String?) = - viewModelScope.launch { - if (kitSerial != null) { - testDetails?.kitSerial = kitSerial - } - testDetails?.testStatus = testStatus - - try { - if (isOnline) { - parseData() - addResultTestToDb() - } else { - parseData() - testDetails?.testTime = SimpleDateFormat( - "yyyy-MM-dd HH:mm:ss", Locale.getDefault() - ).format(Calendar.getInstance().time) - hemoCubeDao.insertAll(testDetails!!) - fireBaseUpload.postValue("Local") - } - } catch (e: Exception) { - Log.e("Testdb", "Upload failed: ${e.message}") - } - } - - - - fun uploadHemoCubeResultToDatabaseforbuffercheckN(isOnline: Boolean, testStatus: Boolean, kitSerial: String?) = - viewModelScope.launch { - if (kitSerial != null) { - testDetails?.kitSerial = kitSerial - } - testDetails?.testStatus = testStatus - - try { - if (isOnline) { - parseData() - addResultTestToDbforbuffercheck() - } else { - parseData() - testDetails?.testTime = SimpleDateFormat( - "yyyy-MM-dd HH:mm:ss", Locale.getDefault() - ).format(Calendar.getInstance().time) - hemoCubeDao.insertAll(testDetails!!) - fireBaseUpload.postValue("Local") - } - } catch (e: Exception) { - Log.e("Testdb", "Upload failed: ${e.message}") - } - } - - - - - - fun getDeviceData(deviceId: String?) = viewModelScope.launch { - deviceData.postValue(deviceId?.let { repository.getDeviceDataById(it) }) - } - - private fun parseData() { - testDetails?.deviceRatio = DataHolder.hemocubeResult - testDetails?.resultData = DataHolder.hemoCubeTestData?.resultData.toString() - testDetails?.location = DataHolder.location - testDetails?.testTime = SimpleDateFormat( - "yyyy-MM-dd HH:mm:ss", Locale.getDefault() - ).format(Calendar.getInstance().time) - testDetails?.appVersion = DataHolder.hemoCubeTestData?.appVersion - testDetails?.deviceId = DataHolder.hemoCubeTestData?.deviceId - testDetails?.deviceSerialNumber = - sharedPreference.getString(Constants.USER_ID, "").toString() - testDetails?.kitSerial = sharedPreference.getString(Constants.KIT_NUMBER, "").toString() - testDetails?.led1Buffer = DataHolder.hemoCubeTestData?.led1Buffer - testDetails?.led2Buffer = DataHolder.hemoCubeTestData?.led2Buffer - testDetails?.led1Sample = DataHolder.hemoCubeTestData?.led1Sample - testDetails?.led2Sample = DataHolder.hemoCubeTestData?.led2Sample - testDetails?.led1Average = DataHolder.hemoCubeTestData?.led1Average - testDetails?.led2Average = DataHolder.hemoCubeTestData?.led2Average - testDetails?.deviceRatio = DataHolder.hemoCubeTestData?.deviceRatio - testDetails?.calculatedRatio = DataHolder.hemoCubeTestData?.calculatedRatio - testDetails?.classificationResult = DataHolder.hemoCubeTestData?.classificationResult!! - } - - private fun addResultTestToDb() { - viewModelScope.launch { - try { - testDetails!!.reportUploadTime = SimpleDateFormat( - "yyyy-MM-dd HH:mm:ss", Locale.getDefault() - ).format(Calendar.getInstance().time) - - when (val response = repository.addTestToDatabase(testDetails)) { - is Response.Success -> { - val kitCount = sharedPreference.getInt(Constants.KIT_COUNT, 0) - with(sharedPreference.edit()) { - putInt(Constants.KIT_COUNT, kitCount.plus(1)) - apply() - } - Log.i("Testdb", "Data uploaded to Firestore successfully") - fireBaseUpload.postValue("Success") - } - - is Response.Error -> { - Log.e("Testdb", "Error uploading data to Firestore: $response") - fireBaseUpload.postValue("Error") - } - } - } catch (e: Exception) { - Log.e("Testdb", "Exception during data upload: ${e.message}") - fireBaseUpload.postValue("Error") - } - } - } - - - private fun addResultTestToDbforbuffercheck() { - viewModelScope.launch { - try { - testDetails!!.reportUploadTime = SimpleDateFormat( - "yyyy-MM-dd HH:mm:ss", Locale.getDefault() - ).format(Calendar.getInstance().time) - - when (val response = repository.addTestToDatabaseforBufferCheck(testDetails)) { - is Response.Success -> { - Log.i("Testdb", "Data uploaded to Firestore successfully") - fireBaseUpload.postValue("Success") - } - - is Response.Error -> { - Log.e("Testdb", "Error uploading data to Firestore: $response") - fireBaseUpload.postValue("Error") - } - } - } catch (e: Exception) { - Log.e("Testdb", "Exception during data upload: ${e.message}") - fireBaseUpload.postValue("Error") - } - } - } - - fun bulkAddResultTestToDb(userData: HemoCubeTestData) { - viewModelScope.launch { - userData.reportUploadTime = SimpleDateFormat( - "yyyy-MM-dd HH:mm:ss", Locale.getDefault() - ).format(Calendar.getInstance().time) - when (repository.addTestToDatabase(userData)) { - is Response.Success -> { - fireBaseBulkUpload.postValue("Success") - deleteById(userData._id) - } - - else -> { - fireBaseBulkUpload.postValue("Error") - } - } - } - } - - fun deleteById(userId: String) = viewModelScope.launch { - hemoCubeDao.deleteById(id = userId) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt index 126936b..6375d39 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt @@ -32,7 +32,7 @@ import `in`.sminnovations.hpostesting.databinding.ActivityHemocubeBinding @AndroidEntryPoint open class HemocubeBufferCheckActivity : AppCompatActivity() { private lateinit var binding: ActivityHemocubeBinding - private val viewModel by viewModels() + private val viewModel by viewModels() private var myMenu: Menu? = null private lateinit var mDriver: UsbSerialDriver 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 17f2db1..374da38 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 @@ -156,7 +156,7 @@ class HomeFragment : Fragment() { rvAdapter = view?.let { UserListAdapter(requireContext(), hemoCubeViewModel, recyclerViewOptions, - it, batLevel) + it, batLevel, requireActivity()) }!! binding.rvOrder.adapter = rvAdapter @@ -206,7 +206,7 @@ class HomeFragment : Fragment() { batLevel = bm.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY) rvAdapter = view?.let { - UserListAdapter(requireContext(), hemoCubeViewModel, recyclerViewOptions, it, batLevel) + UserListAdapter(requireContext(), hemoCubeViewModel, recyclerViewOptions, it, batLevel, requireActivity()) }!! binding.rvOrder.adapter = rvAdapter rvAdapter.startListening()