diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 43b22c9..2d25da2 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -4,17 +4,16 @@
diff --git a/app/build.gradle b/app/build.gradle
index 5b2fa60..2abcfee 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -13,11 +13,11 @@ android {
compileSdk 34
defaultConfig {
- applicationId "in.sminnovations.hposregistration"
+ applicationId "in.sminnovations.hposregistration.iocl"
minSdk 26
targetSdk 34
- versionCode 6
- versionName "1.0.6"
+ versionCode 8
+ versionName "1.0.8"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
diff --git a/app/google-services.json b/app/google-services.json
index a35779e..1ddf40e 100644
--- a/app/google-services.json
+++ b/app/google-services.json
@@ -1,84 +1,67 @@
{
"project_info": {
- "project_number": "650071678820",
- "project_id": "hpos-af3cc",
- "storage_bucket": "hpos-af3cc.appspot.com"
+ "project_number": "243503501547",
+ "project_id": "iocl-iisc-hpos",
+ "storage_bucket": "iocl-iisc-hpos.appspot.com"
},
"client": [
{
"client_info": {
- "mobilesdk_app_id": "1:650071678820:android:7569c1cad4fc99916c6471",
+ "mobilesdk_app_id": "1:243503501547:android:f17de652a3524d047feeae",
"android_client_info": {
- "package_name": "in.sminnovations.hposregistration"
+ "package_name": "com.iocl_iisc.hposqc"
}
},
- "oauth_client": [
- {
- "client_id": "650071678820-70kp5jvjda4r5diqch2kn4lc40p4f42g.apps.googleusercontent.com",
- "client_type": 1,
- "android_info": {
- "package_name": "in.sminnovations.hposregistration",
- "certificate_hash": "7714b9268a81d0cf0fb178b0af8dbb630f8fc70a"
- }
- },
- {
- "client_id": "650071678820-to41afi9f0gi5r3k6v7pe1e5p96nupcs.apps.googleusercontent.com",
- "client_type": 3
- }
- ],
+ "oauth_client": [],
"api_key": [
{
- "current_key": "AIzaSyAVdNGCev_AFX0qmuZJF6kxzRzXUTeAW5I"
+ "current_key": "AIzaSyBPxgcDkZfZMr8cFrkMWkVf1a-MstzWC1k"
}
],
"services": {
"appinvite_service": {
- "other_platform_oauth_client": [
- {
- "client_id": "650071678820-to41afi9f0gi5r3k6v7pe1e5p96nupcs.apps.googleusercontent.com",
- "client_type": 3
- }
- ]
+ "other_platform_oauth_client": []
}
}
},
{
"client_info": {
- "mobilesdk_app_id": "1:650071678820:android:f96be19e5d43102b6c6471",
+ "mobilesdk_app_id": "1:243503501547:android:e1bb0f338c8448dd7feeae",
"android_client_info": {
- "package_name": "in.sminnovations.hpostesting"
+ "package_name": "in.sminnovations.hposregistration.iocl"
}
},
- "oauth_client": [
- {
- "client_id": "650071678820-l87dnr0bdj95get0khgnvfv2an1k6ogq.apps.googleusercontent.com",
- "client_type": 1,
- "android_info": {
- "package_name": "in.sminnovations.hpostesting",
- "certificate_hash": "7714b9268a81d0cf0fb178b0af8dbb630f8fc70a"
- }
- },
- {
- "client_id": "650071678820-to41afi9f0gi5r3k6v7pe1e5p96nupcs.apps.googleusercontent.com",
- "client_type": 3
- }
- ],
+ "oauth_client": [],
"api_key": [
{
- "current_key": "AIzaSyAVdNGCev_AFX0qmuZJF6kxzRzXUTeAW5I"
+ "current_key": "AIzaSyBPxgcDkZfZMr8cFrkMWkVf1a-MstzWC1k"
}
],
"services": {
"appinvite_service": {
- "other_platform_oauth_client": [
- {
- "client_id": "650071678820-to41afi9f0gi5r3k6v7pe1e5p96nupcs.apps.googleusercontent.com",
- "client_type": 3
- }
- ]
+ "other_platform_oauth_client": []
+ }
+ }
+ },
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:243503501547:android:18b8b33b2dc3776d7feeae",
+ "android_client_info": {
+ "package_name": "in.sminnovations.hpostesting.iocl"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyBPxgcDkZfZMr8cFrkMWkVf1a-MstzWC1k"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
}
}
}
],
"configuration_version": "1"
-}
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/hposregistration/adapters/UserListOfflineAdapter.kt b/app/src/main/java/com/example/hposregistration/adapters/UserListOfflineAdapter.kt
index a53b67e..d1d6a6d 100644
--- a/app/src/main/java/com/example/hposregistration/adapters/UserListOfflineAdapter.kt
+++ b/app/src/main/java/com/example/hposregistration/adapters/UserListOfflineAdapter.kt
@@ -41,8 +41,9 @@ class UserListOfflineAdapter(private val view: View) : RecyclerView.Adapter, private
override fun onBindViewHolder(holder: OrderItemViewHolder, position: Int, model: UserData) {
holder.binding.apply {
userName.text = "Name: ${model.name}"
- userId.text = "User ID: ${model._id}"
+ userId.text = "Sample ID: ${model._id}"
+ timeCreated.text = "Time Created: ${model.createdAt}"
Glide.with(view).load(model.userImageURL).into(userImage)
}
}
diff --git a/app/src/main/java/com/example/hposregistration/data/Constant.kt b/app/src/main/java/com/example/hposregistration/data/Constant.kt
index 8462f60..5687b9f 100644
--- a/app/src/main/java/com/example/hposregistration/data/Constant.kt
+++ b/app/src/main/java/com/example/hposregistration/data/Constant.kt
@@ -22,6 +22,9 @@ object Constant {
const val USER_ID = "usernameId"
val STATICID = listOf(
+ "SMIMYSURU",
+ "SMIKODAGU",
+ "SMICHAMARAJA",
"SMIREG1",
"SMIREG2",
"SMIREG3",
diff --git a/app/src/main/java/com/example/hposregistration/ui/activities/MainActivity.kt b/app/src/main/java/com/example/hposregistration/ui/activities/MainActivity.kt
index 013bdf0..008b884 100644
--- a/app/src/main/java/com/example/hposregistration/ui/activities/MainActivity.kt
+++ b/app/src/main/java/com/example/hposregistration/ui/activities/MainActivity.kt
@@ -24,40 +24,40 @@ class MainActivity : AppCompatActivity() {
override fun onResume() {
super.onResume()
- val firebaseAppDistribution = FirebaseAppDistribution.getInstance()
- firebaseAppDistribution.updateIfNewReleaseAvailable()
- .addOnProgressListener { updateProgress ->
-
- if (updateProgress.apkBytesDownloaded > 0) {
- Toast.makeText(
- this,
- "${updateProgress.updateStatus}. ${updateProgress.apkBytesDownloaded / 1048576} /${updateProgress.apkFileTotalBytes / 1048576} MB",
- Toast.LENGTH_SHORT
- ).show()
- }
- }
- .addOnFailureListener { e ->
- // (Optional) Handle errors.
- if (e is FirebaseAppDistributionException) {
- when (e.errorCode) {
- FirebaseAppDistributionException.Status.NOT_IMPLEMENTED -> {
- // SDK did nothing. This is expected when building for Play.
- }
-
- else -> {
- // Handle other errors.
- Toast.makeText(
- this,
- "AppDistribution error, status: ${e.errorCode}",
- Toast.LENGTH_SHORT
- ).show()
- }
- }
- FirebaseCrashlytics.getInstance().recordException(e)
- }
- }
- .addOnSuccessListener {
-// Toast.makeText(this, "App Update: Success!", Toast.LENGTH_SHORT).show()
- }
+// val firebaseAppDistribution = FirebaseAppDistribution.getInstance()
+// firebaseAppDistribution.updateIfNewReleaseAvailable()
+// .addOnProgressListener { updateProgress ->
+//
+// if (updateProgress.apkBytesDownloaded > 0) {
+// Toast.makeText(
+// this,
+// "${updateProgress.updateStatus}. ${updateProgress.apkBytesDownloaded / 1048576} /${updateProgress.apkFileTotalBytes / 1048576} MB",
+// Toast.LENGTH_SHORT
+// ).show()
+// }
+// }
+// .addOnFailureListener { e ->
+// // (Optional) Handle errors.
+// if (e is FirebaseAppDistributionException) {
+// when (e.errorCode) {
+// FirebaseAppDistributionException.Status.NOT_IMPLEMENTED -> {
+// // SDK did nothing. This is expected when building for Play.
+// }
+//
+// else -> {
+// // Handle other errors.
+// Toast.makeText(
+// this,
+// "AppDistribution error, status: ${e.errorCode}",
+// Toast.LENGTH_SHORT
+// ).show()
+// }
+// }
+// FirebaseCrashlytics.getInstance().recordException(e)
+// }
+// }
+// .addOnSuccessListener {
+//// Toast.makeText(this, "App Update: Success!", Toast.LENGTH_SHORT).show()
+// }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/hposregistration/ui/fragments/UserListFragment.kt b/app/src/main/java/com/example/hposregistration/ui/fragments/UserListFragment.kt
index 4e2565e..964f671 100644
--- a/app/src/main/java/com/example/hposregistration/ui/fragments/UserListFragment.kt
+++ b/app/src/main/java/com/example/hposregistration/ui/fragments/UserListFragment.kt
@@ -8,6 +8,7 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.SearchView
import android.widget.Toast
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
@@ -25,13 +26,15 @@ import `in`.sminnovations.hposregistration.R
import `in`.sminnovations.hposregistration.databinding.FragmentUserListBinding
import java.text.SimpleDateFormat
import java.util.Date
+import java.util.Locale
@AndroidEntryPoint
class UserListFragment : BaseFragment() {
-
+ private lateinit var userId:String
+ private var district:String ="Mysuru"
private var _binding: FragmentUserListBinding? = null
private val binding get() = _binding!!
-
+ private lateinit var offlineAdapter:UserListOfflineAdapter
private val viewModel by viewModels()
private var isOnline = false
@@ -43,6 +46,14 @@ class UserListFragment : BaseFragment() {
): View {
_binding = FragmentUserListBinding.inflate(inflater, container, false)
sharedPreference = requireContext().getSharedPreferences("PREFERENCE_NAME", Context.MODE_PRIVATE)
+ userId = sharedPreference.getString(Constant.USER_ID, "").toString()
+ if(userId=="SMIMYSURU"){
+ district = "Mysuru"
+ }else if(userId=="SMIKODAGU"){
+ district = "Kodagu"
+ }else if(userId=="SMICHAMARAJA"){
+ district = "Chamarajanagar"
+ }
setupViews()
return binding.root
}
@@ -66,12 +77,15 @@ class UserListFragment : BaseFragment() {
binding.btnRegisterUser.setOnClickListener {
findNavController().navigate(R.id.action_userListFragment_to_registrationFragment)
}
+
binding.btnLogout.setOnClickListener {
logoutUser(requireContext())
}
}
private fun init() {
+ binding.searchUser.isIconified = false
+
viewModel.networkStatusLiveData.observe(viewLifecycleOwner) { isNetworkAvailable ->
if (isNetworkAvailable) {
isOnline = isNetworkAvailable
@@ -83,6 +97,28 @@ class UserListFragment : BaseFragment() {
}
}
+ binding.searchUser.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
+ override fun onQueryTextSubmit(query: String?): Boolean {
+ // Perform the final search
+ if(isOnline){
+ fetchFromServer(query)
+ }else{
+ filterList(query)
+ }
+ return true
+ }
+
+ override fun onQueryTextChange(newText: String?): Boolean {
+ // Perform search as the user types
+ if(isOnline){
+ fetchFromServer(newText)
+ }else{
+ filterList(newText)
+ }
+ return true
+ }
+ })
+
binding.uploadData.setOnClickListener {
showUploadDialog(requireContext())
}
@@ -91,6 +127,12 @@ class UserListFragment : BaseFragment() {
deteleIncompleteRegistration(userDataList)
}
}
+ private fun filterList(query: String?) {
+ val filteredList = viewModel.allUserData.value?.filter { userData ->
+ userData.name.contains(query ?: "", ignoreCase = true)
+ }
+ offlineAdapter.differ.submitList(filteredList)
+ }
private fun logoutUser(context: Context) {
val builder = AlertDialog.Builder(context)
@@ -163,29 +205,89 @@ class UserListFragment : BaseFragment() {
}
}
}
+// private fun fetchFromServer(searchTerm: String? = null) {
+// binding.noList.visibility = View.GONE
+// binding.rvOrder.visibility = View.VISIBLE
+// val dateFormat = SimpleDateFormat("yyyy-MM-dd")
+// val currentDate = Date()
+// val today = dateFormat.format(currentDate)
+//
+// // Base query to fetch patient data created today
+// var query = Firebase.firestore.collection("patientData")
+// .whereGreaterThanOrEqualTo("createdAt", today)
+// .orderBy("createdAt", Query.Direction.DESCENDING)
+//
+// // If a search term is provided, add it to the query
+// if (!searchTerm.isNullOrEmpty()) {
+// query = query.whereEqualTo("aadharId", searchTerm)
+// }
+//
+// query.get().addOnSuccessListener {
+// if (it.documents.isEmpty() && isOnline) {
+// binding.emptyRegistrations.visibility = View.VISIBLE
+// }
+// }
+//
+// val recyclerViewOptions =
+// FirestoreRecyclerOptions.Builder().setQuery(query, UserData::class.java)
+// .build()
+// val adapter = UserListOnlineAdapter(recyclerViewOptions, binding.root)
+// binding.rvOrder.adapter = adapter
+// adapter.startListening()
+// }
+private fun fetchFromServer(searchTerm: String? = null) {
+ binding.noList.visibility = View.GONE
+ binding.rvOrder.visibility = View.VISIBLE
+ val dateFormat = SimpleDateFormat("yyyy-MM-dd")
+ val currentDate = Date()
+ val today = dateFormat.format(currentDate)
- private fun fetchFromServer() {
- binding.noList.visibility = View.GONE
- binding.rvOrder.visibility = View.VISIBLE
- val dateFormat = SimpleDateFormat("yyyy-MM-dd")
- val currentDate = Date()
- val today = dateFormat.format(currentDate)
- val query = Firebase.firestore.collection("patientData")
- .whereGreaterThanOrEqualTo("createdAt", today)
- .orderBy("createdAt", Query.Direction.DESCENDING)
- query.get().addOnSuccessListener {
- if (it.documents.isEmpty() && isOnline) {
- binding.emptyRegistrations.visibility = View.VISIBLE
- }
- }
- val recyclerViewOptions =
- FirestoreRecyclerOptions.Builder().setQuery(query, UserData::class.java)
- .build()
- val adapter = UserListOnlineAdapter(recyclerViewOptions, binding.root)
- binding.rvOrder.adapter = adapter
- adapter.startListening()
+ // Base query to fetch patient data created today and from the specified district
+ var query = Firebase.firestore.collection("patientData")
+ // .whereGreaterThanOrEqualTo("createdAt", today)
+ .whereEqualTo("district", district)
+ .orderBy("createdAt", Query.Direction.DESCENDING)
+
+ // If a search term is provided, add it to the query
+ if (!searchTerm.isNullOrEmpty()) {
+ query = query.whereEqualTo("_id", searchTerm)
}
+ query.get().addOnSuccessListener {
+ if (it.documents.isEmpty() && isOnline) {
+ binding.emptyRegistrations.visibility = View.VISIBLE
+ }
+ }
+
+ val recyclerViewOptions =
+ FirestoreRecyclerOptions.Builder().setQuery(query, UserData::class.java)
+ .build()
+ val adapter = UserListOnlineAdapter(recyclerViewOptions, binding.root)
+ binding.rvOrder.adapter = adapter
+ adapter.startListening()
+}
+// private fun fetchFromServer() {
+// binding.noList.visibility = View.GONE
+// binding.rvOrder.visibility = View.VISIBLE
+// val dateFormat = SimpleDateFormat("yyyy-MM-dd")
+// val currentDate = Date()
+// val today = dateFormat.format(currentDate)
+// val query = Firebase.firestore.collection("patientData")
+// .whereGreaterThanOrEqualTo("createdAt", today)
+// .orderBy("createdAt", Query.Direction.DESCENDING)
+// query.get().addOnSuccessListener {
+// if (it.documents.isEmpty() && isOnline) {
+// binding.emptyRegistrations.visibility = View.VISIBLE
+// }
+// }
+// val recyclerViewOptions =
+// FirestoreRecyclerOptions.Builder().setQuery(query, UserData::class.java)
+// .build()
+// val adapter = UserListOnlineAdapter(recyclerViewOptions, binding.root)
+// binding.rvOrder.adapter = adapter
+// adapter.startListening()
+// }
+
private fun fetchFromLocalDB() {
binding.uploadData.visibility = View.GONE
viewModel.allUserData.observe(viewLifecycleOwner) { userDataList ->
@@ -201,9 +303,9 @@ class UserListFragment : BaseFragment() {
binding.noList.visibility = View.GONE
binding.rvOrder.visibility = View.VISIBLE
deteleIncompleteRegistration(userDataList)
- val adapter = UserListOfflineAdapter(binding.root)
- adapter.differ.submitList(userDataList)
- binding.rvOrder.adapter = adapter
+ offlineAdapter = UserListOfflineAdapter(binding.root)
+ offlineAdapter.differ.submitList(userDataList)
+ binding.rvOrder.adapter = offlineAdapter
}
}
}
diff --git a/app/src/main/java/com/example/hposregistration/ui/fragments/registration/AbhaRegistrationFragment.kt b/app/src/main/java/com/example/hposregistration/ui/fragments/registration/AbhaRegistrationFragment.kt
index 5b3a74b..32d263d 100644
--- a/app/src/main/java/com/example/hposregistration/ui/fragments/registration/AbhaRegistrationFragment.kt
+++ b/app/src/main/java/com/example/hposregistration/ui/fragments/registration/AbhaRegistrationFragment.kt
@@ -1,5 +1,7 @@
package com.example.hposregistration.ui.fragments.registration
+import android.content.Context
+import android.content.SharedPreferences
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
@@ -20,11 +22,14 @@ import dagger.hilt.android.AndroidEntryPoint
import `in`.sminnovations.hposregistration.databinding.FragmentAbhaRegistrationBinding
import org.json.JSONObject
import java.time.Instant
+import java.util.Random
@AndroidEntryPoint
class AbhaRegistrationFragment : BaseFragment() {
private var _binding: FragmentAbhaRegistrationBinding? = null
+ private lateinit var sharedPreference: SharedPreferences
+
private val binding get() = _binding!!
private val viewModel by viewModels()
@@ -46,6 +51,8 @@ class AbhaRegistrationFragment : BaseFragment() {
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
): View {
_binding = FragmentAbhaRegistrationBinding.inflate(inflater, container, false)
+ sharedPreference =
+ requireContext().getSharedPreferences("PREFERENCE_NAME", Context.MODE_PRIVATE)
return binding.root
}
@@ -83,20 +90,26 @@ class AbhaRegistrationFragment : BaseFragment() {
if (validateInputs(abhaIdInput, aadharIdInput, userName, centerName)) {
userData.apply {
- name = userName
+ name = userName.lowercase()
aadharId = aadharIdInput
abhaId = abhaIdInput
registrationCenterName = centerName
- _id = centerName.substring(0, 3).uppercase() + currentUnixTime.toString()
-// _id = aadharId + userName.substring(0, 3).uppercase() + centerName.substring(0, 3).uppercase()
+ // _id = centerName.substring(0, 3).uppercase() + name.substring(0, 4) +
+ _id = userName.substring(0, 3).uppercase() + generateFourDigitNumber() +centerName.substring(0, 3).uppercase()
}
viewModel.insert(userData)
-
+ Toast.makeText(requireActivity(),"ID"+userData._id,Toast.LENGTH_SHORT).show()
navigateToUserDetailsFragment(userData._id)
}
+
}
}
+ private fun generateFourDigitNumber(): String {
+ val random = Random()
+ val number: Int = 1000 + random.nextInt(9000) // Ensures a 4-digit number
+ return number.toString()
+ }
private fun processScannedData(contents: String) {
try {
@@ -170,14 +183,14 @@ class AbhaRegistrationFragment : BaseFragment() {
abhaId: String, aadharId: String, userName: String, centerName: String
): Boolean {
with(binding) {
- if (!checkAbhaIDNumber(abhaId)) {
- etAbhaId.error = "Invalid Abha ID"
- return false
- }
- if (!checkAadharIDNumber(aadharId)) {
- aadharID.error = "Invalid Aadhar ID"
- return false
- }
+// if (!checkAbhaIDNumber(abhaId)) {
+// etAbhaId.error = "Invalid Abha ID"
+// return false
+// }
+// if (!checkAadharIDNumber(aadharId)) {
+// aadharID.error = "Invalid Aadhar ID"
+// return false
+// }
if (!checkUserName(userName)) {
etName.error = "Name field can't be empty or less than 3 characters"
return false
diff --git a/app/src/main/java/com/example/hposregistration/ui/fragments/registration/ReviewDetailsRegistrationFragment.kt b/app/src/main/java/com/example/hposregistration/ui/fragments/registration/ReviewDetailsRegistrationFragment.kt
index dcddf34..8a78d46 100644
--- a/app/src/main/java/com/example/hposregistration/ui/fragments/registration/ReviewDetailsRegistrationFragment.kt
+++ b/app/src/main/java/com/example/hposregistration/ui/fragments/registration/ReviewDetailsRegistrationFragment.kt
@@ -111,7 +111,7 @@ class ReviewDetailsRegistrationFragment : BaseFragment() {
requireContext().getString(R.string.abha_number, userData.abhaId)
binding.tvAadharId.text =
requireContext().getString(R.string.aadhar_number_details, userData.aadharId)
- binding.tvUserName.text = requireContext().getString(R.string.user_name, userData.name)
+ binding.tvUserName.text = requireContext().getString(R.string.user_name, userData.name.lowercase())
binding.tvBirthYear.text =
requireContext().getString(R.string.birth_year_details, userData.birthYear)
binding.tvGender.text =
diff --git a/app/src/main/java/com/example/hposregistration/ui/fragments/registration/UserDetailsRegistrationFragment.kt b/app/src/main/java/com/example/hposregistration/ui/fragments/registration/UserDetailsRegistrationFragment.kt
index 037abd6..0e90620 100644
--- a/app/src/main/java/com/example/hposregistration/ui/fragments/registration/UserDetailsRegistrationFragment.kt
+++ b/app/src/main/java/com/example/hposregistration/ui/fragments/registration/UserDetailsRegistrationFragment.kt
@@ -71,13 +71,12 @@ class UserDetailsRegistrationFragment : Fragment() {
user.phoneNumber.let { etMobile.setText(it) }
user.careOf.let { etCareof.setText(it) }
user.maritalStatus.let { etIsMarried.setText(it, false) }
- user.caste.let { etCaste.setText(it, false) }
+ user.caste.let { etCaste.setText(it) }
user.category.let { etCategory.setText(it, false) }
user.subCaste.let { etSubCaste.setText(it) }
user.house.let { etHouse.setText(it) }
user.city.let { etCity.setText(it) }
- user.district.let { etDistrict.setText(it) }
- user.state.let { etState.setText(it) }
+ user.district.let { etDistrict.setText(it, false) }
user.pinCode.let { etPincode.setText(it) }
user.isUnderMedication.let {
if (it != null) {
@@ -137,8 +136,8 @@ class UserDetailsRegistrationFragment : Fragment() {
private fun verifyUserDetails(): Boolean {
with(binding) {
val yob = etYob.text.toString()
- if (yob.isEmpty() || yob.toInt() <= 1900 || yob.toInt() > 2023) {
- etYob.error = "Please enter a valid birth year between 1900 and 2023"
+ if (yob.isEmpty() || yob.toInt() <= 1900 || yob.toInt() > 2020) {
+ etYob.error = "Please enter a valid birth year between 1900 and 2020"
return false
} else {
userData.birthYear = yob
@@ -153,12 +152,13 @@ class UserDetailsRegistrationFragment : Fragment() {
}
val mobile = etMobile.text.toString()
- if (mobile.isEmpty() || mobile.length != 10) {
- etMobile.error = "Please enter a valid 10-digit mobile number"
- return false
- } else {
- userData.phoneNumber = mobile
- }
+ userData.phoneNumber = mobile
+// if (mobile.isEmpty() || mobile.length != 10) {
+// etMobile.error = "Please enter a valid 10-digit mobile number"
+// return false
+// } else {
+// userData.phoneNumber = mobile
+// }
val careOf = etCareof.text.toString()
if (careOf.isEmpty()) {
diff --git a/app/src/main/res/layout/fragment_abha_registration.xml b/app/src/main/res/layout/fragment_abha_registration.xml
index 6729b21..32d46e1 100644
--- a/app/src/main/res/layout/fragment_abha_registration.xml
+++ b/app/src/main/res/layout/fragment_abha_registration.xml
@@ -18,6 +18,7 @@
@@ -93,7 +96,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
- android:text="@string/enter_abha_number_manualy"
+ android:text="Enter Details to proceed\n(ABHA and Aadhar are optional)"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/seperator1" />
@@ -111,6 +114,7 @@
android:id="@+id/et_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:maxLength="24"
android:hint="@string/person_s_name" />
@@ -168,6 +172,7 @@
android:id="@+id/centerName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:maxLength="24"
android:hint="@string/center_name"
android:inputType="text" />
@@ -189,6 +194,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/proceed"
+ android:textColor="@color/white"
app:cornerRadius="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -200,6 +206,7 @@
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginTop="24dp"
+ android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/btnProceed">
@@ -246,6 +253,7 @@
style="@style/title1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:visibility="gone"
android:layout_marginTop="24dp"
android:text="@string/create_abha_id_card"
app:layout_constraintStart_toStartOf="parent"
@@ -254,6 +262,7 @@
+ android:padding="24dp">
-
-
+ android:hint="@string/caste" />
@@ -234,7 +230,7 @@
android:id="@+id/et_house"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:hint="@string/house" />
+ android:hint="Address" />
@@ -256,23 +252,25 @@
android:hint="@string/city_town" />
-
-
+ android:hint="@string/district"
+ android:inputType="none"
+ android:labelFor="@id/til_district"
+ app:simpleItems="@array/district" />
@@ -291,6 +289,7 @@
android:id="@+id/et_state"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:text="Karnataka"
android:hint="@string/state" />
diff --git a/app/src/main/res/layout/fragment_user_list.xml b/app/src/main/res/layout/fragment_user_list.xml
index 8b08c4f..7670e91 100644
--- a/app/src/main/res/layout/fragment_user_list.xml
+++ b/app/src/main/res/layout/fragment_user_list.xml
@@ -89,6 +89,15 @@
app:layout_constraintEnd_toStartOf="@+id/uploadData"
app:layout_constraintTop_toTopOf="@+id/tv_title" />
+
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 8bbfd81..a152b0b 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -48,7 +48,7 @@
Register User
Is user having any family history for Sickle Cell
Family History of Sickle Cell
- Mobile Number (10 digits)
+ Mobile Number(Optional)
Sub Caste
Capture User Image
Mobile Number
@@ -156,5 +156,10 @@
- Female
- Other
+
+ - Mysuru
+ - Kodagu
+ - Chamarajanagar
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 3c8d57b..f55cf0b 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,7 +1,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
- id 'com.android.application' version '8.0.2' apply false
- id 'com.android.library' version '8.0.2' apply false
+ id 'com.android.application' version '8.4.0' apply false
+ id 'com.android.library' version '8.4.0' apply false
id 'org.jetbrains.kotlin.android' version '1.8.0' apply false
id 'androidx.navigation.safeargs' version '2.7.0-beta02' apply false
id 'com.google.dagger.hilt.android' version '2.46' apply false
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 99d6797..b86d5a2 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
#Wed Jul 12 14:05:11 IST 2023
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists