Added incubationTime check

This commit is contained in:
mohamedkaif356
2023-09-19 17:39:20 +05:30
parent 095f9fb027
commit 94894f34a5
5 changed files with 85 additions and 12 deletions

View File

@@ -9,6 +9,7 @@ data class UserData(
@PrimaryKey
var _id: String = "",
var name: String = "",
var incubationTime: String = "",
var birthYear: String = "",
var userImageURL: String = "",
var location: Location? = null,

View File

@@ -10,17 +10,20 @@ import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.example.hpostesting.data.DataHolder
import com.example.hpostesting.data.model.patient.UserData
import com.example.hpostesting.presentation.testRight.TestRightViewModel
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
import java.util.Calendar
import java.util.Date
import java.util.Locale
class UserListAdapter(
options: FirestoreRecyclerOptions<UserData>,
private val view: View
) :
FirestoreRecyclerAdapter<UserData, UserListAdapter.OrderItemViewHolder>(options) {
options: FirestoreRecyclerOptions<UserData>, private val view: View
) : FirestoreRecyclerAdapter<UserData, UserListAdapter.OrderItemViewHolder>(options) {
class OrderItemViewHolder(val binding: UserItemViewBinding) :
RecyclerView.ViewHolder(binding.root)
@@ -34,6 +37,11 @@ class UserListAdapter(
@SuppressLint("SetTextI18n")
override fun onBindViewHolder(holder: OrderItemViewHolder, position: Int, model: UserData) {
holder.binding.apply {
if (model.incubationTime == "") {
btnStartIncubation.visibility = View.VISIBLE
} else {
btnStartIncubation.visibility = View.GONE
}
userName.text = "Name: ${model.name}"
userId.text = "User ID:${model._id}"
Glide.with(view).load(model.userImageURL).into(userImage)
@@ -43,6 +51,27 @@ class UserListAdapter(
} else {
teststatus.text = "Test is Pending"
}
btnStartIncubation.setOnClickListener {
it.visibility = View.GONE
Firebase.firestore.collection("patientData").whereEqualTo("_id", model._id).get()
.addOnSuccessListener { data ->
if (data.documents.isNotEmpty()) {
data.documents.forEach { userData ->
Firebase.firestore.collection("patientData").document(userData.id)
.update(
"incubationTime", SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss", Locale.getDefault()
).format(Calendar.getInstance().time).toString()
).addOnSuccessListener {
Toast.makeText(
view.context, "Incubation started", Toast.LENGTH_SHORT
).show()
startListening()
}
}
}
}
}
userCard.setOnClickListener {
if (model.testStatus != null) {
if (model.testStatus!!) {
@@ -52,11 +81,45 @@ class UserListAdapter(
Toast.LENGTH_SHORT
).show()
} else {
DataHolder.selectedTest = model
view.findNavController().navigate(R.id.action_nav_home_to_mainActivity)
if (model.incubationTime != "") {
if (isBetween15And30Minutes(model.incubationTime) < 15) {
Toast.makeText(
view.context,
"Incubation has not completed 15 minutes",
Toast.LENGTH_SHORT
).show()
} else if (isBetween15And30Minutes(model.incubationTime) > 30) {
Toast.makeText(
view.context,
"Incubation crossed 30 minutes, need to repeat the incubation",
Toast.LENGTH_SHORT
).show()
} else {
DataHolder.selectedTest = model
view.findNavController()
.navigate(R.id.action_nav_home_to_mainActivity)
}
} else {
Toast.makeText(
view.context,
"Incubation not started for this user",
Toast.LENGTH_SHORT
).show()
}
}
}
}
}
}
private fun isBetween15And30Minutes(createdAt: String): Long {
val formatter = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault())
val createdAtDate: Date = formatter.parse(createdAt)!!
val currentTime = Calendar.getInstance().time
val diffMillis = currentTime.time - createdAtDate.time
return diffMillis / (60 * 1000)
}
}

View File

@@ -56,9 +56,6 @@ class HomeFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewModel.allUserData.observe(viewLifecycleOwner) { userData ->
if (userData.isNotEmpty()) {
}
deleteIncompleteRegistrations(userData)
}
hemoCubeViewModel.allUserData.observe(viewLifecycleOwner) { userData ->
@@ -99,7 +96,8 @@ class HomeFragment : Fragment() {
}
}
private fun loadUserData() {
val query = Firebase.firestore.collection("patientData").whereEqualTo("testStatus", false).orderBy("createdAt", Query.Direction.DESCENDING)
val query = Firebase.firestore.collection("patientData").whereEqualTo("testStatus", false)
// .orderBy("createdAt", Query.Direction.DESCENDING)
query.get().addOnSuccessListener {
if (it.documents.isEmpty()) {
binding.pendingTest.visibility = View.VISIBLE
@@ -137,7 +135,7 @@ class HomeFragment : Fragment() {
dialog.show()
}
private fun getData(search: String?, field: String) {
val capitalizedSearch = search?.replaceFirstChar {
search?.replaceFirstChar {
if (search.lowercase()
.startsWith(it.lowercase())
) it.titlecase(Locale.getDefault()) else it.toString()

View File

@@ -72,6 +72,16 @@
app:layout_constraintTop_toBottomOf="@id/userId"
tools:text="Test Status: Completed"/>
<Button
android:id="@+id/btn_startIncubation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:text="@string/start_incubation"
android:textColor="@color/white"
app:layout_constraintStart_toEndOf="@+id/userImage"
app:layout_constraintTop_toBottomOf="@+id/teststatus" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -192,5 +192,6 @@
<string name="test_completed">Test Completed</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="start_incubation">Start Incubation</string>
</resources>