21 Commits
crop ... qa

Author SHA1 Message Date
Pritimay Sarkar
ccc50108d3 add app distribution auto update 2023-10-29 07:33:12 +05:30
Pritimay Sarkar
2bd6495612 remove key files 2023-10-24 14:09:53 +05:30
Pritimay Sarkar
143d90b028 fix empty list messages display 2023-10-24 14:07:08 +05:30
Pritimay Sarkar
3bda3f0d51 display app version 2023-10-24 14:05:07 +05:30
Pritimay Sarkar
b6a03e2ebf add search fields based on date partition
- optimize search based on current date partition
	- fix createdAt empty string in case of offline upload
2023-10-23 02:23:28 +05:30
Pritimay Sarkar
eec8867ddc show only current day registrations
- reduce database reads by fetching only current day registrations
	- sort users list in latest first order
2023-10-23 02:20:39 +05:30
mohamedkaif356
8dcec7bb3f Sorting 2023-10-04 13:49:24 +05:30
mohamedkaif356
a239cd882f Caste, Sub Caste and Gender entry updated 2023-09-26 14:36:01 +05:30
mohamedkaif356
8a2b0374e3 User Card updated 2023-09-25 12:45:44 +05:30
smileomi18@gmail.com
be78cff112 CrashAnalytics Added 2023-08-23 17:12:05 +05:30
smileomi18@gmail.com
6c0e7dc31d caste and category issue 2023-08-01 14:23:56 +05:30
smileomi18@gmail.com
f2fb60f08e Merge remote-tracking branch 'origin/master' 2023-08-01 12:36:01 +05:30
mohamedkaif356
57de28b937 Caste and category 2023-08-01 12:35:34 +05:30
smileomi18@gmail.com
bdadfe95e9 Merge remote-tracking branch 'origin/master' 2023-07-20 18:10:30 +05:30
mohamedkaif356
f7d27d79b5 Logo changes and blood group selection change 2023-07-20 18:05:43 +05:30
smileomi18@gmail.com
378c526115 Merge remote-tracking branch 'origin/master' 2023-07-11 15:06:35 +05:30
smileomi18@gmail.com
e029b2e49c Logout Feature 2023-07-10 17:40:04 +05:30
smileomi18@gmail.com
909fd4dc17 Logout Feature 2023-07-07 16:18:39 +05:30
Mohamed Kaif
69518034be Delete vcs.xml 2023-07-07 10:07:19 +00:00
Mohamed Kaif
48799a7f77 Delete misc.xml 2023-07-07 10:07:12 +00:00
mohamedkaif356
e74a69662e Implemented Login Feature 2023-07-07 15:26:11 +05:30
67 changed files with 2315 additions and 567 deletions

3
.gitignore vendored
View File

@@ -10,6 +10,9 @@
.DS_Store
/build
/captures
/app/google-services.json
.externalNativeBuild
.cxx
local.properties
/.idea/misc.xml
/.idea/vcs.xml

2
.idea/gradle.xml generated
View File

@@ -8,7 +8,7 @@
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleHome" value="$USER_HOME$/andriod studio gradle/gradle-7.3" />
<option name="gradleJvm" value="Embedded JDK" />
<option name="gradleJvm" value="jbr-17" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />

2
.idea/kotlinc.xml generated
View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="KotlinJpsPluginSettings">
<option name="version" value="1.8.21" />
<option name="version" value="1.8.22" />
</component>
</project>

1496
Login_Feature.patch Normal file

File diff suppressed because it is too large Load Diff

3
app/.gitignore vendored
View File

@@ -1 +1,2 @@
/build
/build
/google-services*

View File

@@ -5,18 +5,19 @@ plugins {
id 'com.google.gms.google-services'
id 'androidx.navigation.safeargs.kotlin'
id 'kotlin-kapt'
id 'com.google.firebase.crashlytics'
}
android {
namespace 'in.sminnovations.hposregistration'
compileSdk 33
compileSdk 34
defaultConfig {
applicationId "in.sminnovations.hposregistration"
minSdk 26
targetSdk 33
versionCode 1
versionName "1.0"
targetSdk 34
versionCode 6
versionName "1.0.6"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
@@ -49,17 +50,21 @@ dependencies {
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
//firebase
implementation platform('com.google.firebase:firebase-bom:32.1.0')
// firebase
implementation("com.google.firebase:firebase-crashlytics-ktx")
implementation platform("com.google.firebase:firebase-bom:32.2.2")
implementation("com.google.firebase:firebase-analytics-ktx")
implementation 'com.google.firebase:firebase-firestore-ktx'
implementation 'com.google.firebase:firebase-auth-ktx'
implementation 'com.google.firebase:firebase-storage-ktx'
implementation 'com.firebaseui:firebase-ui-firestore:8.0.2'
implementation 'com.google.android.gms:play-services-auth:20.5.0'
implementation 'com.google.android.gms:play-services-auth:20.6.0'
implementation 'com.google.firebase:firebase-appdistribution:16.0.0-beta10'
implementation("com.google.firebase:firebase-appdistribution-api-ktx:16.0.0-beta10")
// Coroutines
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1'
// Coroutine Lifecycle Scopes
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1"
@@ -71,8 +76,8 @@ dependencies {
kapt "androidx.hilt:hilt-compiler:1.0.0"
// Navigation Component
implementation "androidx.navigation:navigation-fragment-ktx:2.7.0-beta01"
implementation "androidx.navigation:navigation-ui-ktx:2.7.0-beta01"
implementation "androidx.navigation:navigation-fragment-ktx:2.7.0"
implementation "androidx.navigation:navigation-ui-ktx:2.7.0"
// Retrofit + GSON
implementation "com.squareup.retrofit2:retrofit:2.9.0"
@@ -86,12 +91,12 @@ dependencies {
//image
implementation 'com.github.bumptech.glide:glide:4.13.2'
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.13.2'
//Room
implementation "androidx.room:room-ktx:2.6.0-alpha01"
implementation "androidx.room:room-runtime:2.6.0-alpha01"
kapt ("androidx.room:room-compiler:2.6.0-alpha01")
implementation "androidx.room:room-ktx:2.6.0-alpha03"
implementation "androidx.room:room-runtime:2.6.0-alpha03"
kapt ("androidx.room:room-compiler:2.6.0-alpha03")
// Barcode scanner
implementation 'com.journeyapps:zxing-android-embedded:4.3.0'

View File

@@ -1,84 +0,0 @@
{
"project_info": {
"project_number": "650071678820",
"project_id": "hpos-af3cc",
"storage_bucket": "hpos-af3cc.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:650071678820:android:7569c1cad4fc99916c6471",
"android_client_info": {
"package_name": "in.sminnovations.hposregistration"
}
},
"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
}
],
"api_key": [
{
"current_key": "AIzaSyAVdNGCev_AFX0qmuZJF6kxzRzXUTeAW5I"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "650071678820-to41afi9f0gi5r3k6v7pe1e5p96nupcs.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
},
{
"client_info": {
"mobilesdk_app_id": "1:650071678820:android:f96be19e5d43102b6c6471",
"android_client_info": {
"package_name": "in.sminnovations.hpostesting"
}
},
"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
}
],
"api_key": [
{
"current_key": "AIzaSyAVdNGCev_AFX0qmuZJF6kxzRzXUTeAW5I"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "650071678820-to41afi9f0gi5r3k6v7pe1e5p96nupcs.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
}
],
"configuration_version": "1"
}

View File

@@ -16,16 +16,16 @@
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:icon="@mipmap/hpos_icon"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:roundIcon="@mipmap/hpos_icon_round"
android:supportsRtl="true"
android:theme="@style/Theme.HPOSRegistration"
tools:targetApi="31">
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.example.hposregistration.provider"
android:authorities="in.sminnovations.hposregistration.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
@@ -34,7 +34,6 @@
</provider>
<activity
android:name="com.example.hposregistration.ui.activities.MainActivity"
android:screenOrientation="portrait"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@@ -42,6 +41,11 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.journeyapps.barcodescanner.CaptureActivity"
android:screenOrientation="portrait"
android:stateNotNeeded="true"
tools:replace="android:screenOrientation" />
</application>
</manifest>

View File

@@ -43,7 +43,7 @@ class UserListOfflineAdapter(private val view: View) : RecyclerView.Adapter<User
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)
}
}
}

View File

@@ -27,9 +27,9 @@ class UserListOnlineAdapter(options: FirestoreRecyclerOptions<UserData>, private
@SuppressLint("SetTextI18n")
override fun onBindViewHolder(holder: OrderItemViewHolder, position: Int, model: UserData) {
holder.binding.apply {
userName.text = model.name
userId.text = model._id
Glide.with(view).load(model.userImage).into(userImage)
userName.text = "Name: ${model.name}"
userId.text = "User ID: ${model._id}"
Glide.with(view).load(model.userImageURL).into(userImage)
}
}
}

View File

@@ -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
}
}
}

View File

@@ -6,7 +6,6 @@ import androidx.room.TypeConverters
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
}

View File

@@ -10,12 +10,34 @@ object Constant {
}
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"
}

View File

@@ -7,16 +7,20 @@ import androidx.room.PrimaryKey
data class UserData(
@PrimaryKey
var _id: String = "",
var AbhaId: String = "",
var AadharId: String = "",
var _idSearch: String = "",
var abhaId: String = "",
var abhaIdSearch: String = "",
var aadharId: String = "",
var aadharIdSearch: String = "",
var name: String = "",
var birthYear: String = "",
var gender: String = "",
var phoneNumber: String = "",
var careOf: String = "",
var maritalStatus: String = "",
var category: String = "",
var caste: String = "",
var subCaste: String = "",
var subCaste: String? = "",
var house: String = "",
var city: String = "",
var district: String = "",
@@ -26,25 +30,15 @@ data class UserData(
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 registeredBy: String? = "",
var createdAt: String? = "",
var registrationCenterName: String? = "",
var testStatus: Boolean = false
){
enum class Gender {
MALE,
FEMALE,
OTHER
}
data class Location(
var latitude: Double? = null,
var longitude: Double? = null
)
}
}

View File

@@ -2,6 +2,10 @@ package com.example.hposregistration.ui.activities
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import com.google.firebase.appdistribution.FirebaseAppDistribution
import com.google.firebase.appdistribution.FirebaseAppDistributionException
import com.google.firebase.crashlytics.FirebaseCrashlytics
import dagger.hilt.android.AndroidEntryPoint
import `in`.sminnovations.hposregistration.databinding.ActivityMainBinding
@@ -14,5 +18,46 @@ class MainActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
}
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()
}
}
}

View File

@@ -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
}
}

View File

@@ -3,6 +3,7 @@ package com.example.hposregistration.ui.fragments
import android.app.AlertDialog
import android.content.Context
import android.content.DialogInterface
import android.content.SharedPreferences
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
@@ -12,14 +13,18 @@ import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import com.example.hposregistration.adapters.UserListOfflineAdapter
import com.example.hposregistration.adapters.UserListOnlineAdapter
import com.example.hposregistration.data.Constant
import com.example.hposregistration.data.user.UserData
import com.example.hposregistration.ui.viewmodels.RegistrationViewModel
import com.firebase.ui.firestore.FirestoreRecyclerOptions
import com.google.firebase.firestore.Query
import com.google.firebase.firestore.ktx.firestore
import com.google.firebase.ktx.Firebase
import dagger.hilt.android.AndroidEntryPoint
import `in`.sminnovations.hposregistration.R
import `in`.sminnovations.hposregistration.databinding.FragmentUserListBinding
import java.text.SimpleDateFormat
import java.util.Date
@AndroidEntryPoint
class UserListFragment : BaseFragment() {
@@ -31,10 +36,13 @@ class UserListFragment : BaseFragment() {
private var isOnline = false
private lateinit var sharedPreference: SharedPreferences
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
): View {
_binding = FragmentUserListBinding.inflate(inflater, container, false)
sharedPreference = requireContext().getSharedPreferences("PREFERENCE_NAME", Context.MODE_PRIVATE)
setupViews()
return binding.root
}
@@ -50,9 +58,17 @@ class UserListFragment : BaseFragment() {
}
private fun setupViews() {
val pInfo = requireActivity().packageManager.getPackageInfo(
requireActivity().packageName, 0
)
val version = pInfo.versionName
binding.appVersion.text = version
binding.btnRegisterUser.setOnClickListener {
findNavController().navigate(R.id.action_userListFragment_to_registrationFragment)
}
binding.btnLogout.setOnClickListener {
logoutUser(requireContext())
}
}
private fun init() {
@@ -70,8 +86,39 @@ class UserListFragment : BaseFragment() {
binding.uploadData.setOnClickListener {
showUploadDialog(requireContext())
}
viewModel.allUserData.observe(viewLifecycleOwner) { userDataList ->
deteleIncompleteRegistration(userDataList)
}
}
private fun logoutUser(context: Context) {
val builder = AlertDialog.Builder(context)
builder.setTitle("Log Out")
builder.setMessage("Do you want to LogOut the Application?")
// Positive button
builder.setPositiveButton("Yes") { dialog, _ ->
saveUserId()
findNavController().navigate(R.id.action_userListFragment_to_loginFragment)
dialog.dismiss()
}
// Negative button
builder.setNegativeButton("No") { dialog, _ ->
dialog.dismiss()
}
val dialog = builder.create()
dialog.show()
}
private fun saveUserId() {
with(sharedPreference.edit()) {
putString(Constant.USER_ID, "")
apply()
}
}
private fun showUploadDialog(context: Context) {
val builder = AlertDialog.Builder(context)
builder.setTitle("Upload DB Registration")
@@ -120,7 +167,17 @@ class UserListFragment : BaseFragment() {
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<UserData>().setQuery(query, UserData::class.java)
.build()
@@ -136,6 +193,7 @@ class UserListFragment : BaseFragment() {
binding.noList.visibility = View.GONE
binding.rvOrder.visibility = View.VISIBLE
} else {
binding.emptyRegistrations.visibility = View.GONE
if (userDataList.isEmpty()) {
binding.noList.visibility = View.VISIBLE
binding.rvOrder.visibility = View.GONE
@@ -153,7 +211,7 @@ class UserListFragment : BaseFragment() {
private fun deteleIncompleteRegistration(userDataList: List<UserData>) {
userDataList.forEach {
if (it._id.isEmpty()) {
if (it.userImageURL.isEmpty()) {
viewModel.deleteById(it._id)
}
}

View File

@@ -65,26 +65,26 @@ class AbhaRegistrationFragment : BaseFragment() {
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 @@ class AbhaRegistrationFragment : BaseFragment() {
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 @@ class AbhaRegistrationFragment : BaseFragment() {
house = obj.getString("address")
}
if (userData.AbhaId.isNotEmpty()) {
if (userData.abhaId.isNotEmpty()) {
saveUserDataAsPerAbhaId()
} else {
saveUserDataAsPerAadharId()
@@ -144,7 +144,7 @@ class AbhaRegistrationFragment : BaseFragment() {
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(

View File

@@ -70,8 +70,8 @@ class CaptureUserImageFragment : Fragment() {
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 @@ class CaptureUserImageFragment : Fragment() {
}
private fun submitImage(uri: Uri) {
userData.userImage = uri.toString()
userData.userImageURL = uri.toString()
viewModel.insert(userData)
navigate()
}

View File

@@ -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.fragment.app.viewModels
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<RegistrationViewModel>()
private val args: ReviewDetailsRegistrationFragmentArgs by navArgs()
@@ -32,6 +39,8 @@ class ReviewDetailsRegistrationFragment : BaseFragment() {
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 @@ class ReviewDetailsRegistrationFragment : BaseFragment() {
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.registeredBy = 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)
@@ -106,10 +122,14 @@ class ReviewDetailsRegistrationFragment : BaseFragment() {
requireContext().getString(R.string.care_of_details, userData.careOf)
binding.tvMaritalStatus.text =
requireContext().getString(R.string.marital_status_details, userData.maritalStatus)
binding.tvCategory.text =
requireContext().getString(R.string.category_details, userData.category)
binding.tvCaste.text =
requireContext().getString(R.string.caste_details, userData.caste)
binding.tvSubCaste.text =
requireContext().getString(R.string.sub_caste_details, userData.subCaste)
if (userData.subCaste != "") {
binding.tvSubCaste.text =
requireContext().getString(R.string.sub_caste_details, userData.subCaste)
}
binding.tvHouse.text =
requireContext().getString(R.string.house_details, userData.house)
binding.tvCity.text =
@@ -121,7 +141,7 @@ class ReviewDetailsRegistrationFragment : BaseFragment() {
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 +155,7 @@ class ReviewDetailsRegistrationFragment : BaseFragment() {
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 +165,7 @@ class ReviewDetailsRegistrationFragment : BaseFragment() {
R.string.sickle_cell_family_history, "No"
)
}else{
} else {
binding.tvSickleCellFamilyHistory.text = requireContext().getString(
R.string.sickle_cell_family_history, userData.sickleCellHistory
)

View File

@@ -5,7 +5,6 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.core.view.isVisible
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
@@ -56,18 +55,30 @@ class UserDetailsRegistrationFragment : Fragment() {
private fun autoFillUserData(user: UserData) {
with(binding) {
user.birthYear.let { etYob.setText(it) }
user.gender.let { etGenderBlock.setText(it, false) }
user.gender.let {
when (it) {
"Male" -> {
male.isChecked = true
}
"Female" -> {
female.isChecked = true
}
else -> {
other.isChecked = true
}
}
}
user.phoneNumber.let { etMobile.setText(it) }
user.careOf.let { etCareof.setText(it) }
user.maritalStatus.let { etIsMarried.setText(it, false) }
user.caste.let { etCategory.setText(it, false) }
user.caste.let { etCaste.setText(it, false) }
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.pinCode.let { etPincode.setText(it) }
user.bloodGroup.let { etBloodGroup.setText(it, false) }
user.isUnderMedication.let {
if (it != null) {
yes.isChecked = it
@@ -78,59 +89,24 @@ class UserDetailsRegistrationFragment : Fragment() {
yes1.isChecked = it
}
}
// user.sickleCellHistory.let{
// if (it != null) {
// if (binding.etFamilyHistory.isVisible) {
// binding.etFamilyHistory.setText(it)
// yes1history.isChecked = true
// }else{
// no1history.isChecked = true
// }
// }
// }
// user.isUnderMedication.let {
// if (it != null) {
// yes.isChecked = it
// }
// }
user.sickleCellHistory.let {
if (it != null) {
yes1history.isChecked = true
}
}
// user.sickleCellHistory.let{
// if (it != null) {
// if(yes1history.isChecked){
// yes1history.isChecked = true
// }else if(no1history.isChecked){
// no1history.isChecked
// }
//
//
// }
// }
if (yes1history.isChecked) {
if (binding.yes1history.isChecked) View.VISIBLE else View.GONE
user.sickleCellHistory.let { etFamilyHistory.setText(it) }
} else {
binding.tilFamilyHistory.visibility = View.GONE
}
binding.yes1history.setOnClickListener {
binding.tilFamilyHistory.visibility =
if (binding.yes1history.isChecked) View.VISIBLE else View.GONE
user.sickleCellHistory.let { etFamilyHistory.setText(it) }
}
//
binding.no1history.setOnClickListener {
binding.tilFamilyHistory.visibility =
if (binding.no1history.isChecked) View.GONE else View.VISIBLE
@@ -168,12 +144,12 @@ class UserDetailsRegistrationFragment : Fragment() {
userData.birthYear = yob
}
val gender = etGenderBlock.text.toString()
if (gender.isEmpty()) {
etGenderBlock.error = "Please enter your gender"
return false
if (male.isChecked) {
userData.gender = "Male"
} else if (female.isChecked) {
userData.gender = "Female"
} else {
userData.gender = gender
userData.gender = "Other"
}
val mobile = etMobile.text.toString()
@@ -202,17 +178,22 @@ class UserDetailsRegistrationFragment : Fragment() {
val category = etCategory.text.toString()
if (category.isEmpty()) {
etCategory.error = "Please enter your caste"
etCategory.error = "Please enter your category"
return false
} else {
userData.caste = category
userData.category = category
}
val caste = etCaste.text.toString()
if (caste.isEmpty()) {
etCaste.error = "Please enter your caste"
return false
} else {
userData.caste = caste
}
val subCaste = etSubCaste.text.toString()
if (subCaste.isEmpty()) {
etSubCaste.error = "Please enter your sub caste"
return false
} else {
if (subCaste.isNotEmpty()) {
userData.subCaste = subCaste
}
@@ -256,13 +237,6 @@ class UserDetailsRegistrationFragment : Fragment() {
userData.pinCode = pincode
}
val bloodGroup = etBloodGroup.text.toString()
if (bloodGroup.isEmpty()) {
etBloodGroup.error = "Please enter your blood group"
return false
} else {
userData.bloodGroup = bloodGroup
}
userData.isUnderMedication = yes.isChecked
userData.isUnderTransfusion = yes1.isChecked
userData.sickleCellHistory = yes1history.isChecked.toString()

View File

@@ -13,6 +13,10 @@ import com.example.hposregistration.data.user.UserData
import com.google.firebase.storage.FirebaseStorage
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
import java.text.SimpleDateFormat
import java.util.Calendar
import java.util.Date
import java.util.Locale
import javax.inject.Inject
@HiltViewModel
@@ -28,7 +32,7 @@ class RegistrationViewModel @Inject constructor(
val fireBaseUpload = MutableLiveData<String>()
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 +43,7 @@ class RegistrationViewModel @Inject constructor(
}
imageRef.downloadUrl
}.addOnSuccessListener { uri ->
userData.userImage = uri.toString()
userData.userImageURL = uri.toString()
addDataToFirebase(userData)
}.addOnFailureListener { exception ->
@@ -63,6 +67,15 @@ class RegistrationViewModel @Inject constructor(
get() = _networkStatusLiveData
fun insert(userData: UserData) = viewModelScope.launch {
val currentDate = Date()
val dateFormat = SimpleDateFormat("yyyyMMdd")
val partition = dateFormat.format(currentDate)
userData._idSearch = partition + userData._id
userData.abhaIdSearch = partition + userData.abhaId
userData.aadharIdSearch = partition + userData.aadharId
userData.createdAt = SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss", Locale.getDefault()
).format(Calendar.getInstance().time)
mainRepository.insert(userData)
}

View File

@@ -1,30 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>

View File

@@ -1,170 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>

View File

@@ -0,0 +1,5 @@
<vector android:autoMirrored="true" android:height="24dp"
android:tint="@color/red" android:viewportHeight="24"
android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@color/red" android:pathData="M17,7l-1.41,1.41L18.17,11H8v2h10.17l-2.58,2.58L17,17l5,-5zM4,5h8V3H4c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h8v-2H4V5z"/>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@@ -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">
<ScrollView
android:layout_width="match_parent"
@@ -169,8 +169,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/center_name"
android:inputType="text"
android:maxLength="12" />
android:inputType="text" />
</com.google.android.material.textfield.TextInputLayout>
<TextView

View File

@@ -0,0 +1,145 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context="com.example.hposregistration.ui.fragments.LoginFragment">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp">
<TextView
android:id="@+id/tv_title"
style="@style/title1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/login"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/imageView"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/smi_logo"
android:layout_marginTop="24dp"
app:layout_constraintEnd_toStartOf="@id/imageView2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_title" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="24dp"
android:src="@drawable/sickle_cell_gov_logo"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/imageView"
app:layout_constraintTop_toBottomOf="@+id/tv_title" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/et_aadharID"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/loginId"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/login_id"
android:inputType="textCapCharacters"
android:maxLength="12" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/et_centerName"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/et_aadharID">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/password"
android:inputType="text"
android:maxLength="12" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.button.MaterialButton
android:id="@+id/btnLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/login"
app:cornerRadius="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/et_centerName" />
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/errorMessageCL"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#80000000"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<include
android:id="@+id/itemErrorMessage"
layout="@layout/item_error_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/progressBarCL"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#80000000"
android:visibility="gone">
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminateDrawable="@drawable/progressbar_costume_view"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -4,7 +4,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".ui.fragments.registration.ReviewDetailsRegistrationFragment">
tools:context="com.example.hposregistration.ui.fragments.registration.ReviewDetailsRegistrationFragment">
<ScrollView
android:layout_width="match_parent"
@@ -126,7 +126,7 @@
app:layout_constraintTop_toBottomOf="@id/tvCareOf" />
<TextView
android:id="@+id/tvCaste"
android:id="@+id/tvCategory"
style="@style/title1_1"
android:layout_width="0dp"
android:layout_height="wrap_content"
@@ -135,6 +135,16 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvMaritalStatus" />
<TextView
android:id="@+id/tvCaste"
style="@style/title1_1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvCategory" />
<TextView
android:id="@+id/tvSubCaste"
style="@style/title1_1"

View File

@@ -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.UserDetailsRegistrationFragment">
tools:context="com.example.hposregistration.ui.fragments.registration.UserDetailsRegistrationFragment">
<ScrollView
android:layout_width="match_parent"
@@ -48,27 +48,39 @@
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/til_gender"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
<RadioGroup
android:id="@+id/gender"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="20dp"
app:layout_constraintEnd_toEndOf="parent"
android:orientation="horizontal"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/til_yob">
<AutoCompleteTextView
android:id="@+id/et_gender_block"
android:layout_width="match_parent"
<RadioButton
android:id="@+id/male"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/gender"
android:inputType="none"
android:labelFor="@id/til_gender"
app:simpleItems="@array/gender" />
android:layout_marginStart="10dp"
android:checked="true"
android:text="@string/male"
android:textSize="16sp" />
</com.google.android.material.textfield.TextInputLayout>
<RadioButton
android:id="@+id/female"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/female"
android:textSize="16sp" />
<RadioButton
android:id="@+id/other"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/other"
android:textSize="16sp" />
</RadioGroup>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/til_mobile"
@@ -79,7 +91,7 @@
android:layout_marginTop="20dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/til_gender">
app:layout_constraintTop_toBottomOf="@id/gender">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/et_mobile"
@@ -147,10 +159,32 @@
android:id="@+id/et_category"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/category"
android:inputType="none"
android:labelFor="@id/til_is_married"
app:simpleItems="@array/category" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/til_caste"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="20dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/til_category">
<AutoCompleteTextView
android:id="@+id/et_Caste"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/caste"
android:inputType="none"
android:labelFor="@id/til_category"
app:simpleItems="@array/category" />
android:labelFor="@id/til_is_married"
app:simpleItems="@array/caste" />
</com.google.android.material.textfield.TextInputLayout>
@@ -163,7 +197,7 @@
android:layout_marginTop="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/til_category">
app:layout_constraintTop_toBottomOf="@id/til_caste">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/et_subCaste"
@@ -294,37 +328,38 @@
app:layout_constraintTop_toBottomOf="@id/til_pincode" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/til_blood_group"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_title3">
<!-- <com.google.android.material.textfield.TextInputLayout-->
<!-- android:id="@+id/til_blood_group"-->
<!-- style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginHorizontal="24dp"-->
<!-- android:layout_marginTop="16dp"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintStart_toStartOf="parent"-->
<!-- app:layout_constraintTop_toBottomOf="@id/tv_title3">-->
<AutoCompleteTextView
android:id="@+id/et_blood_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/blood_group"
android:inputType="none"
android:labelFor="@id/til_blood_group"
app:simpleItems="@array/blood_group" />
<!-- <AutoCompleteTextView-->
<!-- android:id="@+id/et_blood_group"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:hint="@string/blood_group"-->
<!-- android:inputType="none"-->
<!-- android:labelFor="@id/til_blood_group"-->
<!-- app:simpleItems="@array/blood_group" />-->
</com.google.android.material.textfield.TextInputLayout>
<!-- </com.google.android.material.textfield.TextInputLayout>-->
<TextView
android:id="@+id/cb_item1"
style="@style/title1_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="16dp"
android:text="@string/is_patient_under_any_medication"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/til_blood_group" />
app:layout_constraintTop_toBottomOf="@id/tv_title3" />
<RadioGroup
android:id="@+id/radioGroup"
@@ -354,6 +389,7 @@
<TextView
android:id="@+id/cb_item2"
style="@style/title1_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
@@ -388,6 +424,7 @@
</RadioGroup>
<TextView
android:id="@+id/cb_item3"
style="@style/title1_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"

View File

@@ -1,11 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".ui.fragments.UserListFragment"
android:padding="24dp">
android:padding="24dp"
tools:context="com.example.hposregistration.ui.fragments.UserListFragment">
<LinearLayout
android:visibility="gone"
android:id="@+id/fragment_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
<TextView
android:id="@+id/app_version"
style="@style/title2"
android:layout_width="57dp"
android:layout_height="15dp"
android:layout_marginTop="4dp"
android:gravity="center"
android:text="1.0.4"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.017"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_title"
@@ -18,14 +41,28 @@
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/noList"
android:id="@+id/emptyRegistrations"
style="@style/title1"
android:visibility="gone"
android:gravity="center"
android:text="@string/internet_is_not_available_and_there_is_no_data_available_in_local_db"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/empty_registrations"
android:textColor="@color/black"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/noList"
style="@style/title1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/internet_is_not_available_and_there_is_no_data_available_in_local_db"
android:textColor="@color/red"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -33,14 +70,25 @@
<ImageView
android:id="@+id/uploadData"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_margin="5dp"
android:src="@drawable/upload_data"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@+id/tv_title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/tv_title" />
<ImageView
android:id="@+id/btnLogout"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginEnd="10dp"
android:src="@drawable/ic_logout"
app:layout_constraintBottom_toBottomOf="@+id/tv_title"
app:layout_constraintEnd_toStartOf="@+id/uploadData"
app:layout_constraintTop_toTopOf="@+id/tv_title" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_order"
android:layout_width="0dp"
@@ -50,18 +98,20 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_title"
tools:listitem="@layout/user_item_view"/>
tools:listitem="@layout/user_item_view" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/btnRegisterUser"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:elevation="1dp"
android:layout_margin="8dp"
android:src="@drawable/ic_add"
android:backgroundTint="@color/primary"
android:contentDescription="@string/register_user"
android:src="@drawable/ic_add"
app:elevation="1dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:contentDescription="@string/register_user" />
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -1,60 +1,80 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto">
android:layout_height="wrap_content">
<androidx.cardview.widget.CardView
android:id="@+id/newPaperCard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
app:cardBackgroundColor="@color/primary_light"
app:cardCornerRadius="25dp"
app:cardElevation="0dp"
app:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/userCard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="12dp">
android:layout_marginTop="24dp"
app:cardBackgroundColor="@color/primary_light"
app:cardCornerRadius="25dp"
app:cardElevation="0dp"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/userImage"
android:layout_width="100dp"
android:layout_height="100dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/userName"
android:layout_width="0dp"
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/poppins_bold"
android:layout_marginTop="16dp"
android:gravity="center"
android:textColor="@color/black"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/userImage" />
android:padding="12dp">
<TextView
android:id="@+id/userId"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:fontFamily="@font/poppins_bold"
android:layout_marginTop="16dp"
android:gravity="center"
android:textColor="@color/black"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/userName" />
<ImageView
android:id="@+id/userImage"
android:layout_width="100dp"
android:layout_height="100dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/ic_qr_code_scanner" />
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/userName"
style="@style/title1_1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:gravity="start"
android:textColor="@color/black"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/userImage"
app:layout_constraintTop_toTopOf="@+id/userImage"
tools:text="Name: MohamedKaif" />
</androidx.cardview.widget.CardView>
<TextView
android:id="@+id/userId"
style="@style/title1_1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="4dp"
android:gravity="start"
android:textColor="@color/black"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/userImage"
app:layout_constraintTop_toBottomOf="@id/userName"
tools:text="UserID: MohamedKaif" />
<TextView
android:id="@+id/teststatus"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="@style/title1_1"
android:layout_marginTop="4dp"
android:layout_marginStart="16dp"
android:gravity="start"
android:textColor="@color/black"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/userImage"
app:layout_constraintTop_toBottomOf="@id/userId"
tools:text="Test Status: Completed"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/hpos_icon_background"/>
<foreground android:drawable="@mipmap/hpos_icon_foreground"/>
</adaptive-icon>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/hpos_icon_background"/>
<foreground android:drawable="@mipmap/hpos_icon_foreground"/>
</adaptive-icon>

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 982 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

View File

@@ -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">
<fragment
android:id="@+id/registrationFragment"
@@ -26,6 +26,11 @@
<action
android:id="@+id/action_userListFragment_to_registrationFragment"
app:destination="@id/registrationFragment" />
<action
android:id="@+id/action_userListFragment_to_loginFragment"
app:destination="@id/loginFragment"
app:popUpTo="@id/main_nav_graph"
app:popUpToInclusive="true"/>
</fragment>
<fragment
android:id="@+id/profileFragment"
@@ -76,4 +81,16 @@
app:argType="string"
android:defaultValue="null" />
</fragment>
<fragment
android:id="@+id/loginFragment"
android:name="com.example.hposregistration.ui.fragments.LoginFragment"
android:label="fragment_login"
tools:layout="@layout/fragment_login" >
<action
android:id="@+id/action_loginFragment_to_userListFragment"
app:destination="@id/userListFragment"
app:popUpTo="@id/main_nav_graph"
app:popUpToInclusive="true"/>
</fragment>
</navigation>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="hpos_icon_background">#FFFFFF</color>
</resources>

View File

@@ -31,7 +31,7 @@
<string name="birth_year">Birth Year</string>
<string name="marital_status">Select Marital status</string>
<string name="father_s_husband_s_name">Father\'s/Husband\'s Name</string>
<string name="caste">Select Caste</string>
<string name="caste">Caste</string>
<string name="person_s_address_details">Person\'s Address Details</string>
<string name="district">District</string>
<string name="city_town">City / Town</string>
@@ -41,8 +41,8 @@
<string name="review">Review</string>
<string name="blood_group">Select Blood Group</string>
<string name="house">House</string>
<string name="is_patient_under_any_medication">Is user under any medication or treatment?</string>
<string name="is_patient_undergoing_any_blood_transfusion">Is user undergoing any blood transfusion?</string>
<string name="is_patient_under_any_medication">Have you been under medication for Sickle Cell in the past three months?</string>
<string name="is_patient_undergoing_any_blood_transfusion">Have you undergone any Blood transfusions in the Past three months ?</string>
<string name="user_list">User List</string>
<string name="register_user">Register User</string>
@@ -55,6 +55,7 @@
<string name="edit">Edit</string>
<string name="user_details">User Details</string>
<string name="internet_is_not_available_and_there_is_no_data_available_in_local_db">Internet is not available and there is no Data available in Local DB</string>
<string name="empty_registrations">No registrations are available for display</string>
<string name="user_id">User ID: %1$s</string>
<string name="abha_number">Abha Number: %1$s</string>
<string name="aadhar_number_details">Aadhar Number: %1$s</string>
@@ -64,6 +65,7 @@
<string name="phone_number_details">Mobile Number: %1$s</string>
<string name="care_of_details">Father\'s/Husband\'s Name: %1$s</string>
<string name="marital_status_details">Marital Status: %1$s</string>
<string name="category_details">Category: %1$s</string>
<string name="caste_details">Caste: %1$s</string>
<string name="sub_caste_details">Sub Caste: %1$s</string>
<string name="house_details">House: %1$s</string>
@@ -78,15 +80,60 @@
<string name="is_any_sickle">Is Any Sickle cell History: %1$s</string>
<string name="sickle_cell_family_history">Sickle cell Family History: %1$s</string>
<string name="center_name">Center Name</string>
<string name="login_id">Login ID</string>
<string name="password">Password</string>
<string name="login">Login</string>
<string name="_2">Category</string>
<string name="category">Category</string>
<string name="male">Male</string>
<string name="female">Female</string>
<string name="other">Other</string>
<string-array name="category">
<item>GEN</item>
<item>NT-A</item>
<item>NT-B</item>
<item>NT-C</item>
<item>NT-D</item>
<item>OBC</item>
<item>OPEN</item>
<item>OTHER</item>
<item>SBC</item>
<item>SC</item>
<item>ST</item>
</string-array>
<string-array name="caste">
<item>AHIR</item>
<item>BARAI</item>
<item>BRAHMAN</item>
<item>BUDDHIST</item>
<item>CHAMBHAR</item>
<item>CHAMAR</item>
<item>DEWANGAN</item>
<item>DHIWAR</item>
<item>FULMALI</item>
<item>GOND</item>
<item>JAIN</item>
<item>KOLI</item>
<item>KOSHTI</item>
<item>KUMBHAR</item>
<item>KUNBI</item>
<item>LOHAR</item>
<item>MALI</item>
<item>MANNA</item>
<item>MAHAR</item>
<item>MOURYA</item>
<item>MUSLIM</item>
<item>NAVI</item>
<item>OTHER</item>
<item>PAWAR</item>
<item>PARDESI</item>
<item>SHAHU</item>
<item>SONAR</item>
<item>TELI</item>
</string-array>
<string-array name="marital_status">
<item>Married</item>
<item>Single</item>

View File

@@ -3,7 +3,8 @@ plugins {
id 'com.android.application' version '8.0.2' apply false
id 'com.android.library' version '8.0.2' apply false
id 'org.jetbrains.kotlin.android' version '1.8.0' apply false
id 'androidx.navigation.safeargs' version '2.7.0-beta01' apply false
id 'androidx.navigation.safeargs' version '2.7.0-beta02' apply false
id 'com.google.dagger.hilt.android' version '2.46' apply false
id "com.google.gms.google-services" version "4.3.15" apply false
id 'com.google.firebase.crashlytics' version "2.9.8" apply false
}

View File

@@ -1,6 +1,6 @@
#Wed Jun 14 15:14:47 IST 2023
#Wed Jul 12 14:05:11 IST 2023
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists