Added incubationTime check
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
@@ -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()
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user