Index: app/src/main/java/com/example/hposregistration/dao/Converters.kt =================================================================== diff --git a/app/src/main/java/com/example/hposregistration/dao/Converters.kt b/app/src/main/java/com/example/hposregistration/dao/Converters.kt deleted file mode 100644 --- a/app/src/main/java/com/example/hposregistration/dao/Converters.kt (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b) +++ /dev/null (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b) @@ -1,27 +0,0 @@ -package com.example.hposregistration.dao - -import androidx.room.TypeConverter -import com.example.hposregistration.data.user.UserData -import com.google.gson.Gson - -class Converters { - private val gson = Gson() - - @TypeConverter - fun fromString(value: String?): UserData.Location? { - return if (value != null) { - gson.fromJson(value, UserData.Location::class.java) - } else { - null - } - } - - @TypeConverter - fun toString(location: UserData.Location?): String? { - return if (location != null) { - gson.toJson(location) - } else { - null - } - } -} \ No newline at end of file Index: app/src/main/java/com/example/hposregistration/adapters/UserListOfflineAdapter.kt IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/app/src/main/java/com/example/hposregistration/adapters/UserListOfflineAdapter.kt b/app/src/main/java/com/example/hposregistration/adapters/UserListOfflineAdapter.kt --- a/app/src/main/java/com/example/hposregistration/adapters/UserListOfflineAdapter.kt (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b) +++ b/app/src/main/java/com/example/hposregistration/adapters/UserListOfflineAdapter.kt (date 1688622947580) @@ -43,7 +43,7 @@ holder.binding.apply { userName.text = userList.name userId.text = userList._id - Glide.with(view).load(userList.userImage).into(userImage) + Glide.with(view).load(userList.userImageURL).into(userImage) } } } \ No newline at end of file Index: app/src/main/java/com/example/hposregistration/adapters/UserListOnlineAdapter.kt IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/app/src/main/java/com/example/hposregistration/adapters/UserListOnlineAdapter.kt b/app/src/main/java/com/example/hposregistration/adapters/UserListOnlineAdapter.kt --- a/app/src/main/java/com/example/hposregistration/adapters/UserListOnlineAdapter.kt (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b) +++ b/app/src/main/java/com/example/hposregistration/adapters/UserListOnlineAdapter.kt (date 1688622964273) @@ -29,7 +29,7 @@ holder.binding.apply { userName.text = model.name userId.text = model._id - Glide.with(view).load(model.userImage).into(userImage) + Glide.with(view).load(model.userImageURL).into(userImage) } } } \ No newline at end of file Index: app/src/main/java/com/example/hposregistration/ui/fragments/registration/AbhaRegistrationFragment.kt IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== 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 --- a/app/src/main/java/com/example/hposregistration/ui/fragments/registration/AbhaRegistrationFragment.kt (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b) +++ b/app/src/main/java/com/example/hposregistration/ui/fragments/registration/AbhaRegistrationFragment.kt (date 1688626715436) @@ -65,26 +65,26 @@ viewModel.userData.observe(viewLifecycleOwner) { user -> userData = user with(binding) { - aadharID.setText(user.AadharId) - etAbhaId.setText(user.AbhaId) + aadharID.setText(user.aadharId) + etAbhaId.setText(user.abhaId) etName.setText(user.name) - centerName.setText(user.CenterName) + centerName.setText(user.registrationCenterName) } } binding.btnProceed.setOnClickListener { - val abhaId = binding.etAbhaId.text.toString() + val abhaIdInput = binding.etAbhaId.text.toString() val userName = binding.etName.text.toString() - val aadharId = binding.aadharID.text.toString() + val aadharIdInput = binding.aadharID.text.toString() val centerName = binding.centerName.text.toString() - if (validateInputs(abhaId, aadharId, userName, centerName)) { + if (validateInputs(abhaIdInput, aadharIdInput, userName, centerName)) { userData.apply { name = userName - AadharId = aadharId - AbhaId = abhaId - CenterName = centerName + aadharId = aadharIdInput + abhaId = abhaIdInput + registrationCenterName = centerName _id = aadharId + userName.substring(0, 3).uppercase() + centerName.substring(0, 3).uppercase() } @@ -100,7 +100,7 @@ val obj = JSONObject(contents) userData.apply { - AbhaId = obj.getString("hidn").replace("-", "") + abhaId = obj.getString("hidn").replace("-", "") name = obj.getString("name") birthYear = obj.getString("dob").fetchYOBFromDOB().toString() gender = obj.getString("gender").mapToGender().toString() @@ -111,7 +111,7 @@ house = obj.getString("address") } - if (userData.AbhaId.isNotEmpty()) { + if (userData.abhaId.isNotEmpty()) { saveUserDataAsPerAbhaId() } else { saveUserDataAsPerAadharId() @@ -144,7 +144,7 @@ with(binding) { tvScanMessage.visibility = View.VISIBLE tvScanMessage.text = "You have scanned the Abha ID, need to enter Aadhar ID manually" - etAbhaId.setText(userData.AbhaId) + etAbhaId.setText(userData.abhaId) etName.setText(userData.name) } Toast.makeText( Index: app/src/main/java/com/example/hposregistration/ui/fragments/registration/CaptureUserImageFragment.kt IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/app/src/main/java/com/example/hposregistration/ui/fragments/registration/CaptureUserImageFragment.kt b/app/src/main/java/com/example/hposregistration/ui/fragments/registration/CaptureUserImageFragment.kt --- a/app/src/main/java/com/example/hposregistration/ui/fragments/registration/CaptureUserImageFragment.kt (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b) +++ b/app/src/main/java/com/example/hposregistration/ui/fragments/registration/CaptureUserImageFragment.kt (date 1688626715453) @@ -70,8 +70,8 @@ viewModel.getUserByID(args.userId) viewModel.userData.observe(viewLifecycleOwner) { user -> userData = user - if (userData.userImage.isNotEmpty()) { - binding.userImage.loadImageFromUri(Uri.parse(user.userImage)) + if (userData.userImageURL.isNotEmpty()) { + binding.userImage.loadImageFromUri(Uri.parse(user.userImageURL)) binding.btnSubmit.isEnabled = true binding.btnSubmit.setOnClickListener { navigate() @@ -122,7 +122,7 @@ } private fun submitImage(uri: Uri) { - userData.userImage = uri.toString() + userData.userImageURL = uri.toString() viewModel.insert(userData) navigate() } Index: app/src/main/res/layout/fragment_abha_registration.xml IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/app/src/main/res/layout/fragment_abha_registration.xml b/app/src/main/res/layout/fragment_abha_registration.xml --- a/app/src/main/res/layout/fragment_abha_registration.xml (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b) +++ b/app/src/main/res/layout/fragment_abha_registration.xml (date 1688628505589) @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".ui.fragments.registration.AbhaRegistrationFragment"> + tools:context="com.example.hposregistration.ui.fragments.registration.AbhaRegistrationFragment"> UTF-8 =================================================================== 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 --- a/app/src/main/java/com/example/hposregistration/ui/fragments/registration/ReviewDetailsRegistrationFragment.kt (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b) +++ b/app/src/main/java/com/example/hposregistration/ui/fragments/registration/ReviewDetailsRegistrationFragment.kt (date 1688643652115) @@ -1,5 +1,7 @@ package com.example.hposregistration.ui.fragments.registration +import android.content.Context +import android.content.SharedPreferences import android.net.Uri import android.os.Bundle import android.view.LayoutInflater @@ -10,18 +12,23 @@ import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import com.bumptech.glide.Glide +import com.example.hposregistration.data.Constant import com.example.hposregistration.data.user.UserData import com.example.hposregistration.ui.fragments.BaseFragment import com.example.hposregistration.ui.viewmodels.RegistrationViewModel import dagger.hilt.android.AndroidEntryPoint import `in`.sminnovations.hposregistration.R import `in`.sminnovations.hposregistration.databinding.FragmentReviewDetailsRegistrationBinding +import java.text.SimpleDateFormat +import java.util.Calendar +import java.util.Locale @AndroidEntryPoint class ReviewDetailsRegistrationFragment : BaseFragment() { private var _binding: FragmentReviewDetailsRegistrationBinding? = null private val binding get() = _binding!! + private lateinit var sharedPreference: SharedPreferences private val viewModel by viewModels() private val args: ReviewDetailsRegistrationFragmentArgs by navArgs() @@ -32,6 +39,8 @@ inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { _binding = FragmentReviewDetailsRegistrationBinding.inflate(inflater, container, false) + sharedPreference = + requireContext().getSharedPreferences("PREFERENCE_NAME", Context.MODE_PRIVATE) return binding.root } @@ -75,26 +84,33 @@ viewModel.fireBaseUpload.observe(viewLifecycleOwner) { if (it == "Success") { - Toast.makeText(requireContext(), "Registration Done Successfully", Toast.LENGTH_SHORT) - .show() + Toast.makeText( + requireContext(), + "Registration Done Successfully", + Toast.LENGTH_SHORT + ).show() navigateToUserListFragment() } } } private fun addDataToFirebase() { + userData.createdAt = SimpleDateFormat( + "yyyy-MM-dd HH:mm:ss", Locale.getDefault() + ).format(Calendar.getInstance().time) + userData.createdBy = sharedPreference.getString(Constant.USER_ID, "") viewModel.addUserToDatabase(userData) viewModel.deleteById(args.userId) } private fun setUserData(userData: UserData) { with(binding) { - Glide.with(requireActivity()).load(Uri.parse(userData.userImage)).into(userImage) + Glide.with(requireActivity()).load(Uri.parse(userData.userImageURL)).into(userImage) binding.tvUserID.text = requireContext().getString(R.string.user_id, userData._id) binding.tvAbhaId.text = - requireContext().getString(R.string.abha_number, userData.AbhaId) + requireContext().getString(R.string.abha_number, userData.abhaId) binding.tvAadharId.text = - requireContext().getString(R.string.aadhar_number_details, userData.AadharId) + requireContext().getString(R.string.aadhar_number_details, userData.aadharId) binding.tvUserName.text = requireContext().getString(R.string.user_name, userData.name) binding.tvBirthYear.text = requireContext().getString(R.string.birth_year_details, userData.birthYear) @@ -121,7 +137,7 @@ binding.tvPincode.text = requireContext().getString(R.string.pincode_details, userData.pinCode) binding.centerName.text = - requireContext().getString(R.string.centre_name, userData.CenterName) + requireContext().getString(R.string.centre_name, userData.registrationCenterName) if (userData.isUnderMedication!!) { binding.tvIsUnderMedication.text = requireContext().getString( R.string.is_patient_under_any_medication_details, "Yes" @@ -135,7 +151,7 @@ binding.tvIsUnderTransfusion.text = requireContext().getString( R.string.is_patient_undergoing_any_blood_transfusion_details, "Yes" ) - }else{ + } else { binding.tvIsUnderTransfusion.text = requireContext().getString( R.string.is_patient_undergoing_any_blood_transfusion_details, "No" ) @@ -145,7 +161,7 @@ R.string.sickle_cell_family_history, "No" ) - }else{ + } else { binding.tvSickleCellFamilyHistory.text = requireContext().getString( R.string.sickle_cell_family_history, userData.sickleCellHistory ) Index: app/src/main/java/com/example/hposregistration/dao/MyDataBase.kt IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/app/src/main/java/com/example/hposregistration/dao/MyDataBase.kt b/app/src/main/java/com/example/hposregistration/dao/MyDataBase.kt --- a/app/src/main/java/com/example/hposregistration/dao/MyDataBase.kt (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b) +++ b/app/src/main/java/com/example/hposregistration/dao/MyDataBase.kt (date 1688622142624) @@ -6,7 +6,6 @@ import com.example.hposregistration.data.user.UserData @Database(entities = [UserData::class], version = 1, exportSchema = false) -@TypeConverters(Converters::class) abstract class MyDatabase : RoomDatabase() { abstract fun userDao(): UserDao } \ No newline at end of file Index: app/src/main/res/layout/fragment_login.xml IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/app/src/main/res/layout/fragment_login.xml b/app/src/main/res/layout/fragment_login.xml new file mode 100644 --- /dev/null (date 1688720722666) +++ b/app/src/main/res/layout/fragment_login.xml (date 1688720722666) @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: app/src/main/res/values/strings.xml IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml --- a/app/src/main/res/values/strings.xml (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b) +++ b/app/src/main/res/values/strings.xml (date 1688629127107) @@ -78,6 +78,9 @@ Is Any Sickle cell History: %1$s Sickle cell Family History: %1$s Center Name + Login ID + Password + Login Index: app/src/main/java/com/example/hposregistration/ui/fragments/LoginFragment.kt IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/app/src/main/java/com/example/hposregistration/ui/fragments/LoginFragment.kt b/app/src/main/java/com/example/hposregistration/ui/fragments/LoginFragment.kt new file mode 100644 --- /dev/null (date 1688629511306) +++ b/app/src/main/java/com/example/hposregistration/ui/fragments/LoginFragment.kt (date 1688629511306) @@ -0,0 +1,92 @@ +package com.example.hposregistration.ui.fragments + +import android.content.Context +import android.content.SharedPreferences +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.Toast +import androidx.fragment.app.Fragment +import androidx.navigation.fragment.findNavController +import com.example.hposregistration.data.Constant +import `in`.sminnovations.hposregistration.R +import `in`.sminnovations.hposregistration.databinding.FragmentLoginBinding + +class LoginFragment : Fragment() { + + private var _binding: FragmentLoginBinding? = null + private val binding get() = _binding!! + private lateinit var sharedPreference: SharedPreferences + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + _binding = FragmentLoginBinding.inflate(inflater, container, false) + sharedPreference = requireContext().getSharedPreferences("PREFERENCE_NAME", Context.MODE_PRIVATE) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + init() + } + + private fun init() { + if (isUserLoggedIn()) { + navigateToUserListFragment() + return + } + + binding.btnLogin.setOnClickListener { + val loginId = binding.loginId.text.toString() + val password = binding.password.text.toString() + + if (loginId.isNotBlank() && password.isNotBlank()) { + performLogin(loginId, password) + } else { + if (loginId.isBlank()) { + binding.loginId.error = "Please enter a proper Login ID" + } + if (password.isBlank()) { + binding.password.error = "Please enter a proper password" + } + } + } + } + + private fun isUserLoggedIn(): Boolean { + return sharedPreference.getString(Constant.USER_ID, "")?.isNotBlank() == true + } + + private fun navigateToUserListFragment() { + findNavController().navigate(R.id.action_loginFragment_to_userListFragment) + } + + private fun performLogin(loginId: String, password: String) { + val matchingId = Constant.STATICID.firstOrNull { it == loginId } + if (matchingId != null) { + if (password == Constant.password) { + saveUserId(loginId) + navigateToUserListFragment() + return + } else { + Toast.makeText(requireContext(), "Wrong Password", Toast.LENGTH_SHORT).show() + } + } + Toast.makeText(requireContext(), "Wrong UserID", Toast.LENGTH_SHORT).show() + } + + private fun saveUserId(userId: String) { + with(sharedPreference.edit()) { + putString(Constant.USER_ID, userId) + apply() + } + } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } +} Index: app/src/main/java/com/example/hposregistration/ui/viewmodels/RegistrationViewModel.kt IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/app/src/main/java/com/example/hposregistration/ui/viewmodels/RegistrationViewModel.kt b/app/src/main/java/com/example/hposregistration/ui/viewmodels/RegistrationViewModel.kt --- a/app/src/main/java/com/example/hposregistration/ui/viewmodels/RegistrationViewModel.kt (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b) +++ b/app/src/main/java/com/example/hposregistration/ui/viewmodels/RegistrationViewModel.kt (date 1688626837394) @@ -28,7 +28,7 @@ val fireBaseUpload = MutableLiveData() fun addUserToDatabase(userData: UserData) = viewModelScope.launch { - val file = Uri.parse(userData.userImage) + val file = Uri.parse(userData.userImageURL) val storageRef = FirebaseStorage.getInstance().reference val imageRef = storageRef.child("${userData._id}/${file.lastPathSegment}") @@ -39,7 +39,7 @@ } imageRef.downloadUrl }.addOnSuccessListener { uri -> - userData.userImage = uri.toString() + userData.userImageURL = uri.toString() addDataToFirebase(userData) }.addOnFailureListener { exception -> Index: app/src/main/res/navigation/main_nav_graph.xml IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/app/src/main/res/navigation/main_nav_graph.xml b/app/src/main/res/navigation/main_nav_graph.xml --- a/app/src/main/res/navigation/main_nav_graph.xml (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b) +++ b/app/src/main/res/navigation/main_nav_graph.xml (date 1688630245819) @@ -3,7 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main_nav_graph" - app:startDestination="@id/userListFragment"> + app:startDestination="@id/loginFragment"> + + + + + \ No newline at end of file Index: app/src/main/java/com/example/hposregistration/data/user/UserData.kt IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/app/src/main/java/com/example/hposregistration/data/user/UserData.kt b/app/src/main/java/com/example/hposregistration/data/user/UserData.kt --- a/app/src/main/java/com/example/hposregistration/data/user/UserData.kt (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b) +++ b/app/src/main/java/com/example/hposregistration/data/user/UserData.kt (date 1688623336113) @@ -7,8 +7,8 @@ data class UserData( @PrimaryKey var _id: String = "", - var AbhaId: String = "", - var AadharId: String = "", + var abhaId: String = "", + var aadharId: String = "", var name: String = "", var birthYear: String = "", var gender: String = "", @@ -26,25 +26,14 @@ var isUnderMedication: Boolean? = false, var isUnderTransfusion: Boolean? = false, var sickleCellHistory: String? = "", - var userImage: String = "", - var location: Location? = null, - var uploadTime: String? = "", - var testStatus: Boolean? = false, - var mobileId: String = "", - var deviceId: String = "", - var kitSerial: String = "", - var csvPath: String = "", - var reportPath: String = "", - var CenterName: String = "" + var userImageURL: String = "", + var createdBy: String? = "", + var createdAt: String? = "", + var registrationCenterName: String? = "", ){ enum class Gender { MALE, FEMALE, OTHER } - - data class Location( - var latitude: Double? = null, - var longitude: Double? = null - ) -} +} \ No newline at end of file Index: app/src/main/java/com/example/hposregistration/data/Constant.kt IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/app/src/main/java/com/example/hposregistration/data/Constant.kt b/app/src/main/java/com/example/hposregistration/data/Constant.kt --- a/app/src/main/java/com/example/hposregistration/data/Constant.kt (revision 90fd3a1e122b130aca74ea2fea23176d8c3e770b) +++ b/app/src/main/java/com/example/hposregistration/data/Constant.kt (date 1688627667109) @@ -10,12 +10,34 @@ } fun String.mapToGender(): UserData.Gender { - return if (this.lowercase() == "m"|| this.lowercase() == "male") { + return if (this.lowercase() == "m" || this.lowercase() == "male") { UserData.Gender.MALE - } else if (this.lowercase() == "f"|| this.lowercase() == "female") { + } else if (this.lowercase() == "f" || this.lowercase() == "female") { UserData.Gender.FEMALE } else { UserData.Gender.OTHER } } + + const val USER_ID = "usernameId" + + val STATICID = listOf( + "SMIREG1", + "SMIREG2", + "SMIREG3", + "SMIREG4", + "SMIREG5", + "SMIREG6", + "SMIREG7", + "SMIREG8", + "SMIREG9", + "SMIREG10", + "SMIREG11", + "SMIREG12", + "SMIREG13", + "SMIREG14", + "SMIREG15" + ) + + const val password = "SMI@12345" } \ No newline at end of file diff --git a/app/src/main/res/drawable/sickle_cell_gov_logo.png b/app/src/main/res/drawable/sickle_cell_gov_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..20d09526edaf23b358b7a048bb9669a9aecd5781 GIT binary patch literal 12702 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 diff --git a/app/src/main/res/drawable/smi_logo.png b/app/src/main/res/drawable/smi_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e3e2ea6516488655047e6808bdd8e9ba3ac20b3a GIT binary patch literal 25267 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