From ab9392cd5973595b97d4ebe2fd84debbbee639e9 Mon Sep 17 00:00:00 2001 From: "smileomi18@gmail.com" Date: Tue, 11 Jul 2023 16:56:26 +0530 Subject: [PATCH] Login Feature -completed --- .../hpostesting/data/constant/Constants.kt | 35 ++++++++++-------- .../presentation/adapter/UserListAdapter.kt | 5 ++- .../presentation/dashboard/HomeFragment.kt | 2 +- .../dashboard/ui/LoginFragment.kt | 12 ++++-- .../dashboard/ui/gallery/GalleryViewModel.kt | 2 +- .../testRight/TestRightResults.kt | 28 +++++--------- .../testRight/TestRightViewModel.kt | 6 ++- .../res/drawable/sickle_cell_gov_logo.png | Bin 0 -> 12702 bytes app/src/main/res/layout/fragment_login.xml | 2 +- app/src/main/res/layout/user_item_view.xml | 14 +++++++ .../res/navigation/dashboard_navigation.xml | 6 ++- 11 files changed, 67 insertions(+), 45 deletions(-) create mode 100644 app/src/main/res/drawable/sickle_cell_gov_logo.png 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 89c621a..3d5308f 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 @@ -32,21 +32,26 @@ object Constants { const val USER_ID = "usernameId" val STATICID = listOf( - "SMIREG1", - "SMIREG2", - "SMIREG3", - "SMIREG4", - "SMIREG5", - "SMIREG6", - "SMIREG7", - "SMIREG8", - "SMIREG9", - "SMIREG10", - "SMIREG11", - "SMIREG12", - "SMIREG13", - "SMIREG14", - "SMIREG15" + "VIZ-1000-0001", + "VIZ-1000-0002", + "VIZ-1000-0003", + "VIZ-1000-0004", + "VIZ-1000-0005", + "VIZ-1000-0006", + "VIZ-1000-0007", + "VIZ-1000-0008", + "VIZ-1000-0009", + "VIZ-1000-0010", + "VIZ-1000-0011", + "VIZ-1000-0012", + "VIZ-1000-0013", + "VIZ-1000-0014", + "VIZ-1000-0015", + "VIZ-1000-0016", + "VIZ-1000-0017", + "VIZ-1000-0018", + "VIZ-1000-0019" + ) const val password = "SMI@12345" diff --git a/app/src/main/java/com/example/hpostesting/presentation/adapter/UserListAdapter.kt b/app/src/main/java/com/example/hpostesting/presentation/adapter/UserListAdapter.kt index b6e2bc3..653b623 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/adapter/UserListAdapter.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/adapter/UserListAdapter.kt @@ -34,7 +34,10 @@ class UserListAdapter(options: FirestoreRecyclerOptions, private val v userId.text = model._id Glide.with(view).load(model.userImageURL).into(userImage) if (model.testStatus!!) { - userCard.setCardBackgroundColor(view.resources.getColor(R.color.gray)) + teststatus.text = "Test concluded" + + } else { + teststatus.text = "Test is Pending" } userCard.setOnClickListener { if (model.testStatus != null) { 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 5335c54..1bfa6f2 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 @@ -109,7 +109,7 @@ class HomeFragment : Fragment() { // Positive button builder.setPositiveButton("Yes") { dialog, _ -> saveUserId("") - findNavController().navigate(R.id.action_userListFragment_to_loginFragment) + findNavController().navigate(R.id.action_nav_home_to_loginFragment) dialog.dismiss() } 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 f6ddfd1..39fecbe 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 @@ -27,11 +27,15 @@ class LoginFragment : Fragment() { return binding.root } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + init() + } private fun init() { if (isUserLoggedIn()) { - navigateToUserListFragment() + navigateToHomeFragment() return } @@ -56,8 +60,8 @@ class LoginFragment : Fragment() { return sharedPreference.getString(Constants.USER_ID, "")?.isNotBlank() == true } - private fun navigateToUserListFragment() { - findNavController().navigate(R.id.action_loginFragment_to_userListFragment) + private fun navigateToHomeFragment() { + findNavController().navigate(R.id.action_loginFragment_to_homeFragment) } private fun performLogin(loginId: String, password: String) { @@ -65,7 +69,7 @@ class LoginFragment : Fragment() { if (matchingId != null) { if (password == Constants.password) { saveUserId(loginId) - navigateToUserListFragment() + navigateToHomeFragment() return } else { Toast.makeText(requireContext(), "Wrong Password", Toast.LENGTH_SHORT).show() diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/gallery/GalleryViewModel.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/gallery/GalleryViewModel.kt index 7906635..68df077 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/gallery/GalleryViewModel.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/gallery/GalleryViewModel.kt @@ -4,7 +4,7 @@ import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel -class GalleryViewModel : ViewModel() { +class mGalleryViewModel : ViewModel() { private val _text = MutableLiveData().apply { value = "This is gallery Fragment" diff --git a/app/src/main/java/com/example/hpostesting/presentation/testRight/TestRightResults.kt b/app/src/main/java/com/example/hpostesting/presentation/testRight/TestRightResults.kt index 6587257..24cbc32 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/testRight/TestRightResults.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/testRight/TestRightResults.kt @@ -1,8 +1,9 @@ package com.example.hpostesting.presentation.testRight +import android.content.Context import android.content.Intent +import android.content.SharedPreferences import android.os.Bundle -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -18,24 +19,21 @@ import com.example.hpostesting.util.MyUtils.calculateAgeFromYOB import dagger.hilt.android.AndroidEntryPoint import `in`.sminnovations.hpostesting.R import `in`.sminnovations.hpostesting.databinding.FragmentTestRightResultsBinding -import java.text.SimpleDateFormat -import java.util.Date @AndroidEntryPoint class TestRightResults : Fragment() { private lateinit var binding: FragmentTestRightResultsBinding private val viewModel: TestRightViewModel by activityViewModels() - - private val TAG = "TestRightResults" - private var isOnline = false + private lateinit var sharedPreference: SharedPreferences override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { // Inflate the layout for this fragment binding = FragmentTestRightResultsBinding.inflate(inflater, container, false) - + sharedPreference = + requireContext().getSharedPreferences("PREFERENCE_NAME", Context.MODE_PRIVATE) return binding.root } @@ -135,11 +133,12 @@ class TestRightResults : Fragment() { } } viewModel.networkStatusLiveData.observe(viewLifecycleOwner) { isNetworkAvailable -> + val deviceStaticId = sharedPreference.getString(Constants.USER_ID, "") if (isNetworkAvailable) { - viewModel.uploadResultToDatabase(requireContext(), true) + viewModel.uploadResultToDatabase(requireContext(), true, deviceStaticId!!) binding.progressBar.visibility = View.VISIBLE } else { - viewModel.uploadResultToDatabase(requireContext(), false) + viewModel.uploadResultToDatabase(requireContext(), false, deviceStaticId!!) Toast.makeText( requireContext(), "Internet not available, Test Data added to Local DB", @@ -150,7 +149,7 @@ class TestRightResults : Fragment() { } - fun moveToSamplePage() { + private fun moveToSamplePage() { if (DataHolder.sampleReadCounter > Constants.MAXIMUM_TEST_ALLOWED_BEFORE_REFERENCE) { DataHolder.sampleReadCounter = 0 DataHolder.isReferenceTaken = false @@ -162,14 +161,5 @@ class TestRightResults : Fragment() { } } - private fun saveLog() { - Log.d(TAG, "saveLog() called") - val sdfDate = SimpleDateFormat("ddMMyyyy HHmmss") - val fileName: String = "log_" + sdfDate.format(Date()) + ".txt" - - viewModel.saveLog(requireContext().applicationContext, fileName) - - - } } \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/presentation/testRight/TestRightViewModel.kt b/app/src/main/java/com/example/hpostesting/presentation/testRight/TestRightViewModel.kt index 59cf5e4..06b96b1 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/testRight/TestRightViewModel.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/testRight/TestRightViewModel.kt @@ -455,11 +455,12 @@ class TestRightViewModel @Inject constructor( } } - fun uploadResultToDatabase(context: Context, isOnline: Boolean) = viewModelScope.launch { + fun uploadResultToDatabase(context: Context, isOnline: Boolean,deviceSerialNumber: String) = viewModelScope.launch { val csvFilePath = MyUtils.getAppFolderPath(context) + getCSVFileName() val logTxtFilePath = MyUtils.getAppFolderPath(context) + getLogFileName() testDetails?.csvPath = csvFilePath testDetails?.reportPath = logTxtFilePath + testDetails?.deviceSerialNumber = deviceSerialNumber if (isOnline) { val storageRef = FirebaseStorage.getInstance().reference val storageTestDetailsRef = storageRef.child("${testDetails?._id}/") @@ -476,7 +477,7 @@ class TestRightViewModel @Inject constructor( val csvUri = csvUploadTask.storage.downloadUrl.await().toString() val logUri = logUploadTask.storage.downloadUrl.await().toString() - + val serialNumber = Constants.STATICID.firstOrNull { it == deviceSerialNumber } testDetails?.csvPath = csvUri testDetails?.reportPath = logUri @@ -512,6 +513,7 @@ class TestRightViewModel @Inject constructor( userData.csvPath = csvUri userData.reportPath = logUri + bulkAddResultTestToDb(userData) } catch (exception: Exception) { // Handle the exception appropriately (e.g., log the error, display an error message) 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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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/fragment_login.xml b/app/src/main/res/layout/fragment_login.xml index f2c44df..220ea5b 100644 --- a/app/src/main/res/layout/fragment_login.xml +++ b/app/src/main/res/layout/fragment_login.xml @@ -62,7 +62,7 @@ android:layout_height="wrap_content" android:hint="@string/login_id" android:inputType="textCapCharacters" - android:maxLength="12" /> + android:maxLength="13" /> + + + diff --git a/app/src/main/res/navigation/dashboard_navigation.xml b/app/src/main/res/navigation/dashboard_navigation.xml index 7c6aa0f..e7cae43 100644 --- a/app/src/main/res/navigation/dashboard_navigation.xml +++ b/app/src/main/res/navigation/dashboard_navigation.xml @@ -3,7 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/mobile_navigation" - app:startDestination="@+id/nav_home"> + app:startDestination="@+id/loginFragment"> +