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 dd0f288..964895a 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 @@ -43,7 +43,14 @@ class UserListAdapter( btnStartIncubation.visibility = View.VISIBLE } else { 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 } 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 91aaeb9..50c342e 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 @@ -12,6 +12,7 @@ import android.view.ViewGroup import android.widget.Toast import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels +import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController import com.example.hpostesting.data.DataHolder 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.testRight.TestRightViewModel import com.firebase.ui.firestore.FirestoreRecyclerOptions +import com.google.firebase.crashlytics.ktx.crashlytics import com.google.firebase.firestore.Query import com.google.firebase.firestore.ktx.firestore import com.google.firebase.ktx.Firebase import dagger.hilt.android.AndroidEntryPoint import `in`.sminnovations.hpostesting.R import `in`.sminnovations.hpostesting.databinding.FragmentHomeBinding +import kotlinx.coroutines.launch import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -52,11 +55,13 @@ class HomeFragment : Fragment() { 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 return binding.root } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) viewModel.allUserData.observe(viewLifecycleOwner) { userData -> @@ -78,6 +83,14 @@ class HomeFragment : Fragment() { 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 { logoutUser(requireContext()) } @@ -94,6 +107,7 @@ class HomeFragment : Fragment() { requireActivity().finish() } } + private fun setUserId() { binding.btnSubmit.setOnClickListener { val userId = binding.userId.text.toString() @@ -108,6 +122,7 @@ class HomeFragment : Fragment() { } } } + private fun loadUserData() { try { val dateFormat = SimpleDateFormat("yyyy-MM-dd") @@ -134,12 +149,14 @@ class HomeFragment : Fragment() { Firebase.crashlytics.recordException(e) } } + private fun saveUserId(userId: String) { with(sharedPreference.edit()) { putString(Constants.USER_ID, userId) apply() } } + private fun logoutUser(context: Context) { val builder = AlertDialog.Builder(context) builder.setTitle("Log Out") @@ -156,6 +173,7 @@ class HomeFragment : Fragment() { val dialog = builder.create() dialog.show() } + private fun getData(search: String?, field: String) { search?.replaceFirstChar { if (search.lowercase() @@ -172,6 +190,7 @@ class HomeFragment : Fragment() { binding.rvOrder.adapter = rvAdapter rvAdapter.startListening() } + private fun setSearch() { binding.searchProduct.setOnQueryTextListener(object : androidx.appcompat.widget.SearchView.OnQueryTextListener { @@ -192,6 +211,7 @@ class HomeFragment : Fragment() { false } } + override fun onQueryTextChange(query: String?): Boolean { return if (!query.isNullOrEmpty()) { val field = when { @@ -209,6 +229,7 @@ class HomeFragment : Fragment() { } }) } + private fun checkForLocalDBData() { viewModel.allUserData.observe(viewLifecycleOwner) { userDataList -> val uploadDataVisibility = if (userDataList.isEmpty()) View.GONE else View.VISIBLE @@ -220,6 +241,7 @@ class HomeFragment : Fragment() { binding.uploadData.visibility = uploadDataVisibility } } + private fun showUploadDialog(context: Context) { val builder = AlertDialog.Builder(context) builder.setTitle(R.string.upload_db_registration_title) @@ -248,9 +270,7 @@ class HomeFragment : Fragment() { } dialog.dismiss() Toast.makeText( - requireContext(), - R.string.upload_success_message, - Toast.LENGTH_SHORT + requireContext(), R.string.upload_success_message, Toast.LENGTH_SHORT ).show() } } @@ -264,11 +284,6 @@ class HomeFragment : Fragment() { hemoCubeViewModel.bulkAddResultTestToDb(userData) } dialog.dismiss() - Toast.makeText( - requireContext(), - R.string.upload_success_message, - Toast.LENGTH_SHORT - ).show() } } } 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 6f26365..c52b5be 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 @@ -67,7 +67,12 @@ class HemoCubeFragment : Fragment() { if (bloodGroupText.isEmpty()) { binding.etBloodGroup.error = "Please enter your blood group" } else { - fetchResult() + activity?.runOnUiThread { + binding.progressBar.visibility = View.VISIBLE + } + hemoCubeViewModel.uploadHemoCubeResultToDatabase( + isOnline, true, sharedPreferences.getString(Constants.KIT_NUMBER, "") + ) } } if (isTestOngoing) { @@ -287,6 +292,7 @@ class HemoCubeFragment : Fragment() { binding.btnSubmit.isEnabled = true binding.btnSubmit.isClickable = true } + fetchResult() } stringData.contains("RESULT") || resultData.contains("REND") -> { @@ -429,7 +435,7 @@ class HemoCubeFragment : Fragment() { activity?.runOnUiThread { binding.tvName.visibility = View.VISIBLE } - binding.tvName.text = this.name + binding.tvName.text = "Name: ${this.name}\n ID: ${this._id}" deviceId = deviceSerialNo led1Buffer = led1BufferForDevice led2Buffer = led2BufferForDevice @@ -450,12 +456,6 @@ class HemoCubeFragment : Fragment() { apply() } } - activity?.runOnUiThread { - binding.progressBar.visibility = View.VISIBLE - } - hemoCubeViewModel.uploadHemoCubeResultToDatabase( - isOnline, true, sharedPreferences.getString(Constants.KIT_NUMBER, "") - ) } } } catch (e: Exception) { 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 1901e76..33cae71 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 @@ -44,6 +44,7 @@ class HemoCubeViewModel @Inject constructor( val networkStatusLiveData: LiveData get() = _networkStatusLiveData val fireBaseUpload = MutableLiveData() + val fireBaseBulkUpload = MutableLiveData() fun uploadHemoCubeResultToDatabase(isOnline: Boolean, testStatus: Boolean, kitSerial: String?) = viewModelScope.launch { if (kitSerial != null) { @@ -132,11 +133,13 @@ class HemoCubeViewModel @Inject constructor( ).format(Calendar.getInstance().time) when (repository.addTestToDatabase(userData)) { is Response.Success -> { - fireBaseUpload.postValue("Success") + fireBaseBulkUpload.postValue("Success") deleteById(userData._id) } - else -> {} + else -> { + fireBaseBulkUpload.postValue("Error") + } } } } diff --git a/app/src/main/res/layout/fragment_hemo_cube_reference.xml b/app/src/main/res/layout/fragment_hemo_cube_reference.xml index 2a8caba..29f4be5 100644 --- a/app/src/main/res/layout/fragment_hemo_cube_reference.xml +++ b/app/src/main/res/layout/fragment_hemo_cube_reference.xml @@ -32,29 +32,29 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tv_title" /> + + + + + + + + + + + + - + app:layout_constraintTop_toBottomOf="@+id/btn_submit" /> + + app:layout_constraintTop_toBottomOf="@id/tv_subtitle2" /> + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + +