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 9d83d3e..8eab56d 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 @@ -1,6 +1,8 @@ package com.example.hpostesting.presentation.adapter import android.annotation.SuppressLint +import android.app.AlertDialog +import android.content.Context import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -20,8 +22,15 @@ import java.text.SimpleDateFormat import java.util.Calendar import java.util.Date import java.util.Locale +import android.widget.AutoCompleteTextView +import com.example.hpostesting.presentation.hemocube.HemoCubeViewModel +import com.google.firebase.firestore.FirebaseFirestore +import kotlinx.coroutines.withContext class UserListAdapter( + + private val context: Context, + private val hemoCubeViewModel: HemoCubeViewModel, options: FirestoreRecyclerOptions, private val view: View, private val batLevel: Int ) : FirestoreRecyclerAdapter(options) { @@ -61,6 +70,11 @@ class UserListAdapter( } else { teststatus.text = "Test is Pending" } + + holder.binding.btnBlood.setOnClickListener { + showCustomDialog() + } + btnStartIncubation.setOnClickListener { it.visibility = View.GONE Firebase.firestore.collection("patientData").whereEqualTo("_id", model._id).get() @@ -130,6 +144,66 @@ class UserListAdapter( } } + private fun showCustomDialog() { + val inflater = LayoutInflater.from(context) + val dialogView = inflater.inflate(R.layout.dialog_custom, null) + + val builder = AlertDialog.Builder(context) + .setView(dialogView) + .setTitle("Add Blood Group") + + val etBloodGroup = dialogView.findViewById(R.id.et_blood_group) + + builder.setPositiveButton("OK") { dialog, which -> + val bloodGroup = etBloodGroup.text.toString() + if (bloodGroup.isEmpty()) { + etBloodGroup.error = "Please enter your blood group" + } else { + // Check if hemoCubeViewModel and testDetails are not null + val testDetails = hemoCubeViewModel.testDetails + val db: FirebaseFirestore = FirebaseFirestore.getInstance() + + db.collection("patientData") + .whereEqualTo("_id", testDetails?._id) + .get() + .addOnSuccessListener { userdata -> + if (userdata.documents.isNotEmpty()) { + db.collection("patientData") + .document(userdata.documents[0].id) + .update("bloodGroup", bloodGroup) + .addOnSuccessListener { + Toast.makeText( + context, + "Blood group updated successfully", + Toast.LENGTH_SHORT + ).show() + } + } + } + .addOnFailureListener { e -> + Toast.makeText( + context, + "Failed to update blood group: ${e.message}", + Toast.LENGTH_SHORT + ).show() + } + + + + + } + // Handle the selected blood group here + } + + builder.setNegativeButton("Cancel") { dialog, which -> + dialog.dismiss() + } + + val alertDialog = builder.create() + alertDialog.show() + } + + private fun isBetween15And30Minutes(createdAt: String): Long { val formatter = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()) val createdAtDate: Date = formatter.parse(createdAt)!! @@ -142,4 +216,9 @@ class UserListAdapter( } + + + + + } \ No newline at end of file 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 7644cff..56cc9d1 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 @@ -42,6 +42,8 @@ class HomeFragment : Fragment() { private val viewModel: TestRightViewModel by activityViewModels() private val hemoCubeViewModel: HemoCubeViewModel by activityViewModels() private lateinit var rvAdapter: UserListAdapter + + private lateinit var sharedPreference: SharedPreferences override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -151,8 +153,12 @@ class HomeFragment : Fragment() { val bm = requireContext().getSystemService(BATTERY_SERVICE) as BatteryManager val batLevel: Int = bm.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY) - rvAdapter = UserListAdapter(recyclerViewOptions, binding.root, batLevel) + rvAdapter = view?.let { + UserListAdapter(requireContext(), hemoCubeViewModel, recyclerViewOptions, + it, batLevel) + }!! binding.rvOrder.adapter = rvAdapter + rvAdapter.startListening() } catch (e: Exception) { Firebase.crashlytics.recordException(e) @@ -199,7 +205,10 @@ class HomeFragment : Fragment() { val bm = requireContext().getSystemService(BATTERY_SERVICE) as BatteryManager val batLevel: Int = bm.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY) - rvAdapter = UserListAdapter(recyclerViewOptions, binding.root, batLevel) + rvAdapter = view?.let { + UserListAdapter(requireContext(), hemoCubeViewModel, recyclerViewOptions, + it, batLevel) + }!! binding.rvOrder.adapter = rvAdapter rvAdapter.startListening() } diff --git a/app/src/main/res/layout/dialog_custom.xml b/app/src/main/res/layout/dialog_custom.xml new file mode 100644 index 0000000..afdf55e --- /dev/null +++ b/app/src/main/res/layout/dialog_custom.xml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/app/src/main/res/layout/user_item_view.xml b/app/src/main/res/layout/user_item_view.xml index eb15445..d910040 100644 --- a/app/src/main/res/layout/user_item_view.xml +++ b/app/src/main/res/layout/user_item_view.xml @@ -79,9 +79,17 @@ 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" /> - + app:layout_constraintStart_toEndOf="@+id/btn_blood" + app:layout_constraintBottom_toBottomOf="@+id/btn_blood" /> +