Merge branch 'Homocube' of https://gitlab.com/sminnovations/hpos into Homocube

This commit is contained in:
Pritimay Sarkar
2023-10-02 17:46:55 +05:30
6 changed files with 97 additions and 76 deletions

View File

@@ -43,7 +43,14 @@ class UserListAdapter(
btnStartIncubation.visibility = View.VISIBLE btnStartIncubation.visibility = View.VISIBLE
} else { } else {
userId.text = userId.text =
"User ID:${model._id} \n Time: ${isBetween15And30Minutes(model.incubationTime)}" "User ID:${model._id} \n Time: ${isBetween15And30Minutes(model.incubationTime)} \n Started at: ${
SimpleDateFormat("HH:mm:ss").format(
SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss",
Locale.getDefault()
).parse(model.incubationTime)!!
)
}"
btnStartIncubation.visibility = View.GONE btnStartIncubation.visibility = View.GONE
} }

View File

@@ -12,6 +12,7 @@ import android.view.ViewGroup
import android.widget.Toast import android.widget.Toast
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import com.example.hpostesting.data.DataHolder import com.example.hpostesting.data.DataHolder
import com.example.hpostesting.data.constant.Constants import com.example.hpostesting.data.constant.Constants
@@ -22,12 +23,14 @@ import com.example.hpostesting.presentation.adapter.UserListAdapter
import com.example.hpostesting.presentation.hemocube.HemoCubeViewModel import com.example.hpostesting.presentation.hemocube.HemoCubeViewModel
import com.example.hpostesting.presentation.testRight.TestRightViewModel import com.example.hpostesting.presentation.testRight.TestRightViewModel
import com.firebase.ui.firestore.FirestoreRecyclerOptions import com.firebase.ui.firestore.FirestoreRecyclerOptions
import com.google.firebase.crashlytics.ktx.crashlytics
import com.google.firebase.firestore.Query import com.google.firebase.firestore.Query
import com.google.firebase.firestore.ktx.firestore import com.google.firebase.firestore.ktx.firestore
import com.google.firebase.ktx.Firebase import com.google.firebase.ktx.Firebase
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import `in`.sminnovations.hpostesting.R import `in`.sminnovations.hpostesting.R
import `in`.sminnovations.hpostesting.databinding.FragmentHomeBinding import `in`.sminnovations.hpostesting.databinding.FragmentHomeBinding
import kotlinx.coroutines.launch
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Date import java.util.Date
import java.util.Locale import java.util.Locale
@@ -52,11 +55,13 @@ class HomeFragment : Fragment() {
return super.onCreateView(inflater, container, savedInstanceState) return super.onCreateView(inflater, container, savedInstanceState)
} }
sharedPreference = requireContext().getSharedPreferences("PREFERENCE_NAME", Context.MODE_PRIVATE) sharedPreference =
requireContext().getSharedPreferences("PREFERENCE_NAME", Context.MODE_PRIVATE)
DataHolder.selectedTest = null DataHolder.selectedTest = null
return binding.root return binding.root
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
viewModel.allUserData.observe(viewLifecycleOwner) { userData -> viewModel.allUserData.observe(viewLifecycleOwner) { userData ->
@@ -78,6 +83,14 @@ class HomeFragment : Fragment() {
setUserId() setUserId()
} }
} }
hemoCubeViewModel.fireBaseBulkUpload.observe(viewLifecycleOwner) { result ->
if (result == "Success") {
Toast.makeText(requireContext(), "Test Results Uploaded Successfully", Toast.LENGTH_SHORT).show()
}
if (result == "Error") {
Toast.makeText(requireContext(), "Test Results Upload Failed", Toast.LENGTH_SHORT).show()
}
}
binding.btnLogout.setOnClickListener { binding.btnLogout.setOnClickListener {
logoutUser(requireContext()) logoutUser(requireContext())
} }
@@ -94,6 +107,7 @@ class HomeFragment : Fragment() {
requireActivity().finish() requireActivity().finish()
} }
} }
private fun setUserId() { private fun setUserId() {
binding.btnSubmit.setOnClickListener { binding.btnSubmit.setOnClickListener {
val userId = binding.userId.text.toString() val userId = binding.userId.text.toString()
@@ -108,6 +122,7 @@ class HomeFragment : Fragment() {
} }
} }
} }
private fun loadUserData() { private fun loadUserData() {
try { try {
val dateFormat = SimpleDateFormat("yyyy-MM-dd") val dateFormat = SimpleDateFormat("yyyy-MM-dd")
@@ -134,12 +149,14 @@ class HomeFragment : Fragment() {
Firebase.crashlytics.recordException(e) Firebase.crashlytics.recordException(e)
} }
} }
private fun saveUserId(userId: String) { private fun saveUserId(userId: String) {
with(sharedPreference.edit()) { with(sharedPreference.edit()) {
putString(Constants.USER_ID, userId) putString(Constants.USER_ID, userId)
apply() apply()
} }
} }
private fun logoutUser(context: Context) { private fun logoutUser(context: Context) {
val builder = AlertDialog.Builder(context) val builder = AlertDialog.Builder(context)
builder.setTitle("Log Out") builder.setTitle("Log Out")
@@ -156,6 +173,7 @@ class HomeFragment : Fragment() {
val dialog = builder.create() val dialog = builder.create()
dialog.show() dialog.show()
} }
private fun getData(search: String?, field: String) { private fun getData(search: String?, field: String) {
search?.replaceFirstChar { search?.replaceFirstChar {
if (search.lowercase() if (search.lowercase()
@@ -172,6 +190,7 @@ class HomeFragment : Fragment() {
binding.rvOrder.adapter = rvAdapter binding.rvOrder.adapter = rvAdapter
rvAdapter.startListening() rvAdapter.startListening()
} }
private fun setSearch() { private fun setSearch() {
binding.searchProduct.setOnQueryTextListener(object : binding.searchProduct.setOnQueryTextListener(object :
androidx.appcompat.widget.SearchView.OnQueryTextListener { androidx.appcompat.widget.SearchView.OnQueryTextListener {
@@ -192,6 +211,7 @@ class HomeFragment : Fragment() {
false false
} }
} }
override fun onQueryTextChange(query: String?): Boolean { override fun onQueryTextChange(query: String?): Boolean {
return if (!query.isNullOrEmpty()) { return if (!query.isNullOrEmpty()) {
val field = when { val field = when {
@@ -209,6 +229,7 @@ class HomeFragment : Fragment() {
} }
}) })
} }
private fun checkForLocalDBData() { private fun checkForLocalDBData() {
viewModel.allUserData.observe(viewLifecycleOwner) { userDataList -> viewModel.allUserData.observe(viewLifecycleOwner) { userDataList ->
val uploadDataVisibility = if (userDataList.isEmpty()) View.GONE else View.VISIBLE val uploadDataVisibility = if (userDataList.isEmpty()) View.GONE else View.VISIBLE
@@ -220,6 +241,7 @@ class HomeFragment : Fragment() {
binding.uploadData.visibility = uploadDataVisibility binding.uploadData.visibility = uploadDataVisibility
} }
} }
private fun showUploadDialog(context: Context) { private fun showUploadDialog(context: Context) {
val builder = AlertDialog.Builder(context) val builder = AlertDialog.Builder(context)
builder.setTitle(R.string.upload_db_registration_title) builder.setTitle(R.string.upload_db_registration_title)
@@ -248,9 +270,7 @@ class HomeFragment : Fragment() {
} }
dialog.dismiss() dialog.dismiss()
Toast.makeText( Toast.makeText(
requireContext(), requireContext(), R.string.upload_success_message, Toast.LENGTH_SHORT
R.string.upload_success_message,
Toast.LENGTH_SHORT
).show() ).show()
} }
} }
@@ -264,11 +284,6 @@ class HomeFragment : Fragment() {
hemoCubeViewModel.bulkAddResultTestToDb(userData) hemoCubeViewModel.bulkAddResultTestToDb(userData)
} }
dialog.dismiss() dialog.dismiss()
Toast.makeText(
requireContext(),
R.string.upload_success_message,
Toast.LENGTH_SHORT
).show()
} }
} }
} }

View File

@@ -67,7 +67,12 @@ class HemoCubeFragment : Fragment() {
if (bloodGroupText.isEmpty()) { if (bloodGroupText.isEmpty()) {
binding.etBloodGroup.error = "Please enter your blood group" binding.etBloodGroup.error = "Please enter your blood group"
} else { } else {
fetchResult() activity?.runOnUiThread {
binding.progressBar.visibility = View.VISIBLE
}
hemoCubeViewModel.uploadHemoCubeResultToDatabase(
isOnline, true, sharedPreferences.getString(Constants.KIT_NUMBER, "")
)
} }
} }
if (isTestOngoing) { if (isTestOngoing) {
@@ -287,6 +292,7 @@ class HemoCubeFragment : Fragment() {
binding.btnSubmit.isEnabled = true binding.btnSubmit.isEnabled = true
binding.btnSubmit.isClickable = true binding.btnSubmit.isClickable = true
} }
fetchResult()
} }
stringData.contains("RESULT") || resultData.contains("REND") -> { stringData.contains("RESULT") || resultData.contains("REND") -> {
@@ -429,7 +435,7 @@ class HemoCubeFragment : Fragment() {
activity?.runOnUiThread { activity?.runOnUiThread {
binding.tvName.visibility = View.VISIBLE binding.tvName.visibility = View.VISIBLE
} }
binding.tvName.text = this.name binding.tvName.text = "Name: ${this.name}\n ID: ${this._id}"
deviceId = deviceSerialNo deviceId = deviceSerialNo
led1Buffer = led1BufferForDevice led1Buffer = led1BufferForDevice
led2Buffer = led2BufferForDevice led2Buffer = led2BufferForDevice
@@ -450,12 +456,6 @@ class HemoCubeFragment : Fragment() {
apply() apply()
} }
} }
activity?.runOnUiThread {
binding.progressBar.visibility = View.VISIBLE
}
hemoCubeViewModel.uploadHemoCubeResultToDatabase(
isOnline, true, sharedPreferences.getString(Constants.KIT_NUMBER, "")
)
} }
} }
} catch (e: Exception) { } catch (e: Exception) {

View File

@@ -44,6 +44,7 @@ class HemoCubeViewModel @Inject constructor(
val networkStatusLiveData: LiveData<Boolean> val networkStatusLiveData: LiveData<Boolean>
get() = _networkStatusLiveData get() = _networkStatusLiveData
val fireBaseUpload = MutableLiveData<String>() val fireBaseUpload = MutableLiveData<String>()
val fireBaseBulkUpload = MutableLiveData<String>()
fun uploadHemoCubeResultToDatabase(isOnline: Boolean, testStatus: Boolean, kitSerial: String?) = fun uploadHemoCubeResultToDatabase(isOnline: Boolean, testStatus: Boolean, kitSerial: String?) =
viewModelScope.launch { viewModelScope.launch {
if (kitSerial != null) { if (kitSerial != null) {
@@ -132,11 +133,13 @@ class HemoCubeViewModel @Inject constructor(
).format(Calendar.getInstance().time) ).format(Calendar.getInstance().time)
when (repository.addTestToDatabase(userData)) { when (repository.addTestToDatabase(userData)) {
is Response.Success -> { is Response.Success -> {
fireBaseUpload.postValue("Success") fireBaseBulkUpload.postValue("Success")
deleteById(userData._id) deleteById(userData._id)
} }
else -> {} else -> {
fireBaseBulkUpload.postValue("Error")
}
} }
} }
} }

View File

@@ -32,29 +32,29 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_title" /> app:layout_constraintTop_toBottomOf="@id/tv_title" />
<!-- <TextView-->
<!-- android:id="@+id/tv_subtitle3"-->
<!-- style="@style/title2"-->
<!-- android:layout_width="0dp"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginHorizontal="24dp"-->
<!-- android:layout_marginTop="16dp"-->
<!-- android:text="@string/step5"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintStart_toStartOf="parent"-->
<!-- app:layout_constraintTop_toBottomOf="@id/tv_subtitle2" />-->
<TextView <TextView
android:id="@+id/tv_subtitle3"
style="@style/title2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="16dp"
android:text="@string/step5"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_subtitle2" />
<TextView
android:visibility="gone"
android:id="@+id/tv_name" android:id="@+id/tv_name"
style="@style/title2" style="@style/title2"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp" android:layout_marginHorizontal="24dp"
android:layout_marginTop="16dp" android:visibility="gone"
android:text="Name of person"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_subtitle2" /> app:layout_constraintTop_toBottomOf="@+id/btn_submit" />
<TextView <TextView
android:id="@+id/tv_subtitle4" android:id="@+id/tv_subtitle4"
style="@style/title1_1" style="@style/title1_1"
@@ -67,9 +67,7 @@
android:textSize="22sp" android:textSize="22sp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_subtitle3" /> app:layout_constraintTop_toBottomOf="@id/tv_subtitle2" />
<!-- <Button--> <!-- <Button-->
@@ -87,7 +85,6 @@
<!-- app:layout_constraintTop_toBottomOf="@id/til_blood_group" />--> <!-- app:layout_constraintTop_toBottomOf="@id/til_blood_group" />-->
<!-- <Button--> <!-- <Button-->
<!-- android:id="@+id/btn_placebuffer"--> <!-- android:id="@+id/btn_placebuffer"-->
<!-- android:layout_width="wrap_content"--> <!-- android:layout_width="wrap_content"-->
@@ -102,7 +99,6 @@
<!-- app:layout_constraintTop_toBottomOf="@id/btn_submit" />--> <!-- app:layout_constraintTop_toBottomOf="@id/btn_submit" />-->
<Button <Button
android:id="@+id/btn_submit" android:id="@+id/btn_submit"
android:layout_width="wrap_content" android:layout_width="wrap_content"

View File

@@ -192,7 +192,7 @@
<string name="test_completed">Test Completed</string> <string name="test_completed">Test Completed</string>
<string name="select_blood_group">Select Blood Group</string> <string name="select_blood_group">Select Blood Group</string>
<string name="all_registered_user_are_tested_successfully">All registered user are tested successfully</string> <string name="all_registered_user_are_tested_successfully">All registered user are tested successfully</string>
<string name="start_incubation">Start Incubation</string> <string name="start_incubation">Incubate</string>
<string name="check_buffer">Check Buffer</string> <string name="check_buffer">Check Buffer</string>
</resources> </resources>