diff --git a/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt b/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt
index 967eb05..89c621a 100644
--- a/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt
+++ b/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt
@@ -28,4 +28,26 @@ object Constants {
const val ERROR_CRITICAL = 401
const val NO_OF_TIMES_TO_RUN_SAMPLE = 1
+
+ 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/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt
index bf2ca97..5335c54 100644
--- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt
+++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt
@@ -3,6 +3,7 @@ package com.example.hpostesting.presentation.dashboard
import android.app.AlertDialog
import android.content.Context
import android.content.DialogInterface
+import android.content.SharedPreferences
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
@@ -13,6 +14,7 @@ import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.navigation.fragment.findNavController
import com.example.hpostesting.data.DataHolder
+import com.example.hpostesting.data.constant.Constants
import com.example.hpostesting.data.model.patient.UserData
import com.example.hpostesting.presentation.adapter.UserListAdapter
import com.example.hpostesting.presentation.testRight.TestRightViewModel
@@ -31,11 +33,12 @@ class HomeFragment : Fragment() {
private val binding get() = _binding!!
private val viewModel: TestRightViewModel by activityViewModels()
private lateinit var rvAdapter: UserListAdapter
-
+ private lateinit var sharedPreference: SharedPreferences
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
): View {
_binding = FragmentHomeBinding.inflate(inflater, container, false)
+ sharedPreference = requireContext().getSharedPreferences("PREFERENCE_NAME", Context.MODE_PRIVATE)
DataHolder.selectedTest = null
return binding.root
@@ -59,7 +62,9 @@ class HomeFragment : Fragment() {
setUserId()
}
}
-
+ binding.btnLogout.setOnClickListener {
+ logoutUser(requireContext())
+ }
binding.uploadData.setOnClickListener {
showUploadDialog(requireContext())
}
@@ -90,6 +95,35 @@ class HomeFragment : Fragment() {
rvAdapter.startListening()
}
+ private fun saveUserId(userId: String) {
+ with(sharedPreference.edit()) {
+ putString(Constants.USER_ID, userId)
+ apply()
+ }
+ }
+ 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 getData(search: String?, field: String) {
val capitalizedSearch = search?.replaceFirstChar {
if (search.lowercase()
diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/LoginFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/LoginFragment.kt
index 75c2d9e..f6ddfd1 100644
--- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/LoginFragment.kt
+++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/LoginFragment.kt
@@ -1,29 +1,88 @@
package com.example.hpostesting.presentation.dashboard.ui
+import android.content.Context
+import android.content.SharedPreferences
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Toast
+import androidx.navigation.fragment.findNavController
+import com.example.hpostesting.data.constant.Constants
+import `in`.sminnovations.hpostesting.R
import `in`.sminnovations.hpostesting.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
}
+
+ 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(Constants.USER_ID, "")?.isNotBlank() == true
+ }
+
+ private fun navigateToUserListFragment() {
+ findNavController().navigate(R.id.action_loginFragment_to_userListFragment)
+ }
+
+ private fun performLogin(loginId: String, password: String) {
+ val matchingId = Constants.STATICID.firstOrNull { it == loginId }
+ if (matchingId != null) {
+ if (password == Constants.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(Constants.USER_ID, userId)
+ apply()
+ }
+ }
+
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/res/drawable/baseline_logout_24.xml b/app/src/main/res/drawable/baseline_logout_24.xml
new file mode 100644
index 0000000..55ede68
--- /dev/null
+++ b/app/src/main/res/drawable/baseline_logout_24.xml
@@ -0,0 +1,5 @@
+
+
+
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 0000000..e3e2ea6
Binary files /dev/null and b/app/src/main/res/drawable/smi_logo.png differ
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index 55b1b1b..db1f4a6 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -84,6 +84,15 @@
app:layout_constraintBottom_toBottomOf="@+id/tv_title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/tv_title" />
+
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/navigation/dashboard_navigation.xml b/app/src/main/res/navigation/dashboard_navigation.xml
index 325be3d..7c6aa0f 100644
--- a/app/src/main/res/navigation/dashboard_navigation.xml
+++ b/app/src/main/res/navigation/dashboard_navigation.xml
@@ -36,5 +36,11 @@
android:id="@+id/loginFragment"
android:name="com.example.hpostesting.presentation.dashboard.ui.LoginFragment"
android:label="fragment_login"
- tools:layout="@layout/fragment_login" />
+ tools:layout="@layout/fragment_login" >
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 8a91fdd..346b4fa 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -66,7 +66,9 @@
Step 1 : Place the cuvette containing blood sample mixed with kit solution.
Step 2 : Press the button below to start the device reading values.
-
+ Login ID
+ Password
+ Login
Acquire
Enter Patient Details
Patient Name