diff --git a/app/src/main/java/com/theayushyadav11/MessEase/ui/NavigationDrawers/Fragments/AdminFragment.kt b/app/src/main/java/com/theayushyadav11/MessEase/ui/NavigationDrawers/Fragments/AdminFragment.kt
index 0f700db..9fb31ab 100644
--- a/app/src/main/java/com/theayushyadav11/MessEase/ui/NavigationDrawers/Fragments/AdminFragment.kt
+++ b/app/src/main/java/com/theayushyadav11/MessEase/ui/NavigationDrawers/Fragments/AdminFragment.kt
@@ -13,60 +13,95 @@ import com.theayushyadav11.MessEase.utils.Constants.Companion.DESIGNATION
import com.theayushyadav11.MessEase.utils.Mess
class AdminFragment : Fragment() {
- private lateinit var binding: FragmentAdminBinding
- private lateinit var mess: Mess
+ private var _binding: FragmentAdminBinding? = null
+ private val binding get() = _binding!!
+
+ private lateinit var mess: Mess
private val viewModel: AdminViewModel by viewModels()
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
): View {
- binding = FragmentAdminBinding.inflate(layoutInflater, container, false)
+ _binding = FragmentAdminBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- super.onViewCreated(view, savedInstanceState)
initialise()
listeners()
}
+ private fun initialise() {
+ mess = Mess(requireContext())
+ setAdapter()
+ }
+
private fun listeners() {
binding.btnAdd.setOnClickListener {
- add()
+ validateAndAdd()
}
}
- private fun initialise() {
- mess = Mess(requireContext())
- setAdapter()
- }
+ private fun validateAndAdd() {
+ val email = binding.etEmail.text.toString().trim()
+ val designation = binding.spinnerAutoComplete.text.toString().trim()
+ when {
+ email.isEmpty() -> {
+ binding.tilEmail.error = "Email required"
+ }
- fun add() {
- if (binding.etEmail.text.toString().isNotEmpty()) {
- mess.addPb("Adding to Mess Committee")
- viewModel.addToMessCommittee(
- binding.etEmail.text.toString(),
- binding.spinnerAutoComplete.text.toString()
- )
- {
- mess.pbDismiss()
- mess.toast(it)
+ !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches() -> {
+ binding.tilEmail.error = "Invalid email"
}
- } else {
- mess.toast("Please enter email")
+
+ designation.isEmpty() -> {
+ binding.tilspin.error = "Select designation"
+ }
+
+ else -> {
+ binding.tilEmail.error = null
+ binding.tilspin.error = null
+ add(email, designation)
+ }
+ }
+ }
+
+ private fun add(email: String, designation: String) {
+ // Disable button to avoid spam clicking
+ binding.btnAdd.isEnabled = false
+ binding.btnAdd.text = "Adding..."
+
+ mess.addPb("Adding to Mess Committee")
+
+ viewModel.addToMessCommittee(email, designation) {
+ mess.pbDismiss()
+
+ binding.btnAdd.isEnabled = true
+ binding.btnAdd.text = "Add to Committee"
+
+ mess.toast(it)
+
+ // Clear fields after success
+ binding.etEmail.text?.clear()
+ binding.spinnerAutoComplete.text?.clear()
}
}
private fun setAdapter() {
mess.getLists("${DESIGNATION}s") {
- val spinner = binding.spinnerAutoComplete
- val spinnerItems = it
- val adapter =
- ArrayAdapter(requireContext(), android.R.layout.simple_spinner_item, spinnerItems)
- adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
- spinner.setAdapter(adapter)
+ val adapter = ArrayAdapter(
+ requireContext(),
+ android.R.layout.simple_dropdown_item_1line,
+ it
+ )
+ binding.spinnerAutoComplete.setAdapter(adapter)
}
}
+
+ override fun onDestroyView() {
+ super.onDestroyView()
+ _binding = null
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/baseline_attach_email_24.xml b/app/src/main/res/drawable/baseline_attach_email_24.xml
index e48a32d..12a8ef8 100644
--- a/app/src/main/res/drawable/baseline_attach_email_24.xml
+++ b/app/src/main/res/drawable/baseline_attach_email_24.xml
@@ -1,7 +1,8 @@
@@ -11,6 +12,7 @@
diff --git a/app/src/main/res/drawable/baseline_person_24.xml b/app/src/main/res/drawable/baseline_person_24.xml
index c909b0e..a5441e2 100644
--- a/app/src/main/res/drawable/baseline_person_24.xml
+++ b/app/src/main/res/drawable/baseline_person_24.xml
@@ -1,7 +1,7 @@
diff --git a/app/src/main/res/drawable/bg_card_glass_inner.xml b/app/src/main/res/drawable/bg_card_glass_inner.xml
new file mode 100644
index 0000000..03146d7
--- /dev/null
+++ b/app/src/main/res/drawable/bg_card_glass_inner.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_gradient_full.xml b/app/src/main/res/drawable/bg_gradient_full.xml
new file mode 100644
index 0000000..b917f09
--- /dev/null
+++ b/app/src/main/res/drawable/bg_gradient_full.xml
@@ -0,0 +1,7 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_icon_soft.xml b/app/src/main/res/drawable/bg_icon_soft.xml
new file mode 100644
index 0000000..18805a3
--- /dev/null
+++ b/app/src/main/res/drawable/bg_icon_soft.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_admin.xml b/app/src/main/res/layout/fragment_admin.xml
index 874c95f..9fde082 100644
--- a/app/src/main/res/layout/fragment_admin.xml
+++ b/app/src/main/res/layout/fragment_admin.xml
@@ -1,7 +1,7 @@
-
@@ -9,19 +9,17 @@
+ android:scrollbars="none"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintBottom_toBottomOf="parent">
+ android:paddingBottom="40dp">
-
+
+ app:layout_constraintTop_toTopOf="parent"/>
+
+ app:layout_constraintStart_toEndOf="@id/ivHeaderIcon"
+ app:layout_constraintTop_toTopOf="@id/ivHeaderIcon"
+ app:layout_constraintEnd_toEndOf="parent"/>
-
+
+
+
+
+ app:layout_constraintEnd_toEndOf="parent"/>
-
+
+ app:layout_constraintEnd_toEndOf="parent">
+ android:background="@drawable/bg_card_glass_inner"
+ android:padding="22dp">
+
+
+ app:layout_constraintTop_toBottomOf="@id/tvFormTitle">
+ android:layout_height="56dp"
+
+ android:drawableStart="@drawable/baseline_attach_email_24"
+ android:drawablePadding="12dp"
+
+ android:inputType="textEmailAddress"
+ android:paddingStart="12dp"
+
+ android:paddingEnd="12dp"
+ android:textColor="@color/black"
+ android:textColorHint="#80AAAAAA" />
+
+
+ app:layout_constraintTop_toBottomOf="@id/tilEmail">
+ android:layout_height="56dp"
+
+ android:drawableStart="@drawable/baseline_person_24"
+ android:drawablePadding="12dp"
+
+ android:inputType="none"
+ android:paddingStart="12dp"
+
+ android:paddingEnd="12dp"
+ android:textColor="@color/black"
+ android:textColorHint="#80AAAAAA" />
+
+
+
+ app:layout_constraintTop_toBottomOf="@id/cardView" />