diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 23b943e..40b9ab7 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -4,6 +4,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/nivesh/production/bajajfd/interfaces/BajajFDInterface.kt b/app/src/main/java/com/nivesh/production/bajajfd/interfaces/BajajFDInterface.kt
index 276b718..92c09ba 100644
--- a/app/src/main/java/com/nivesh/production/bajajfd/interfaces/BajajFDInterface.kt
+++ b/app/src/main/java/com/nivesh/production/bajajfd/interfaces/BajajFDInterface.kt
@@ -1,7 +1,5 @@
package com.nivesh.production.bajajfd.interfaces
-import com.nivesh.production.bajajfd.model.CreateFDRequest
-
interface BajajFDInterface {
fun stepOneApi(data: String?)
fun stepTwoApi(data: String?)
diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/DocumentUpload.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/DocumentUpload.kt
new file mode 100644
index 0000000..fd4ee1d
--- /dev/null
+++ b/app/src/main/java/com/nivesh/production/bajajfd/model/DocumentUpload.kt
@@ -0,0 +1,10 @@
+package com.nivesh.production.bajajfd.model
+
+data class DocumentUpload(
+ val Description: String? = null,
+ val DocumentType: String? = null,
+ val FDProvider: String? = null,
+ val ImageEncodeToBase64: String? = null,
+ val NiveshClientCode: String? = null,
+ val UniqueId: String? = null
+)
\ No newline at end of file
diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/GetCodes.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/GetCodes.kt
index 55a39c7..11e1470 100644
--- a/app/src/main/java/com/nivesh/production/bajajfd/model/GetCodes.kt
+++ b/app/src/main/java/com/nivesh/production/bajajfd/model/GetCodes.kt
@@ -5,6 +5,6 @@ data class GetCodes(
val Value: String
) {
override fun toString(): String {
- return Value
+ return Label
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt
index 1c019b8..e6b9256 100644
--- a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt
+++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt
@@ -1,23 +1,61 @@
package com.nivesh.production.bajajfd.ui.fragment
+import android.Manifest
+import android.app.ActionBar.LayoutParams
+import android.app.Dialog
+import android.content.pm.PackageManager
+import android.graphics.Bitmap
+import android.net.Uri
import android.os.Bundle
+import android.os.Environment
+import android.provider.MediaStore
+import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.AdapterView
+import android.widget.ArrayAdapter
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.activity.result.ActivityResultLauncher
+import androidx.activity.result.contract.ActivityResultContracts
+import androidx.core.app.ActivityCompat
+import androidx.core.content.ContextCompat
+import androidx.core.content.FileProvider
import androidx.fragment.app.Fragment
-import androidx.lifecycle.ViewModelProvider
-import com.nivesh.production.bajajfd.interfaces.BajajFDInterface
+import androidx.lifecycle.lifecycleScope
+import com.google.gson.Gson
+import com.nivesh.production.bajajfd.BuildConfig
+import com.nivesh.production.bajajfd.R
import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepThreeBinding
+import com.nivesh.production.bajajfd.interfaces.BajajFDInterface
+import com.nivesh.production.bajajfd.model.DocumentUpload
+import com.nivesh.production.bajajfd.model.GetCodeRequest
+import com.nivesh.production.bajajfd.model.GetCodeResponse
+import com.nivesh.production.bajajfd.model.GetCodes
import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity
+import com.nivesh.production.bajajfd.util.Common
+import com.nivesh.production.bajajfd.util.Constants
+import com.nivesh.production.bajajfd.util.Resource
import com.nivesh.production.bajajfd.viewModel.StepThreeBajajFDViewModel
+import retrofit2.http.Tag
+import java.io.File
+import java.security.AccessController.checkPermission
+import java.text.SimpleDateFormat
+import java.util.*
class StepThreeBajajFDFragment : Fragment() {
- private lateinit var stepThreeBajajFDViewModel: StepThreeBajajFDViewModel
+ private var latestTmpUri: Uri? = null
private var _binding: FragmentBajajfdStepThreeBinding? = null
private val binding get() = _binding!!
+ private lateinit var listOfTitle: List
private lateinit var bajajFDInterface: BajajFDInterface
+ private lateinit var stepThreeBajajFDViewModel: StepThreeBajajFDViewModel
+
+ private lateinit var dialog: Dialog
+
companion object {
fun getInstance(fdInterface: BajajFDInterface): StepThreeBajajFDFragment {
val stepTwoFragment = StepThreeBajajFDFragment()
@@ -25,10 +63,38 @@ class StepThreeBajajFDFragment : Fragment() {
return stepTwoFragment
}
}
+
private fun setApi(bajajFDInterfaces: BajajFDInterface) {
bajajFDInterface = bajajFDInterfaces
}
+ private val selectImageIntent = registerForActivityResult(ActivityResultContracts.GetContent())
+ { uri ->
+ val bitmap: Bitmap = MediaStore.Images.Media.getBitmap(context?.contentResolver, uri)
+ binding.iv.setImageBitmap(bitmap)
+ }
+
+ private val takeImageResult =
+ registerForActivityResult(ActivityResultContracts.TakePicture()) { isSuccess ->
+ if (isSuccess) {
+ latestTmpUri?.let { uri ->
+// binding.iv.setImageURI(uri)
+ uploadDocument()
+ }
+ }
+ }
+
+ private val requestPermission = registerForActivityResult(
+ ActivityResultContracts.RequestPermission()
+ ) { isGranted: Boolean ->
+ if (isGranted) {
+ Log.e("permission:", "Granted")
+ } else {
+ Log.e("permission:", "Denied")
+ }
+ }
+
+
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
@@ -36,24 +102,218 @@ class StepThreeBajajFDFragment : Fragment() {
_binding = FragmentBajajfdStepThreeBinding.inflate(inflater, container, false)
val root = binding.root
+ stepThreeBajajFDViewModel = (activity as BajajFdMainActivity).stepThreeBajajFDViewModel
-
- binding.btnNext.setOnClickListener{
- if (validate()){
+ binding.btnNext.setOnClickListener {
+ if (validate()) {
}
}
- binding.btnBack.setOnClickListener{
+ binding.btnBack.setOnClickListener {
(activity as BajajFdMainActivity).binding.viewPager.currentItem = 1
}
+
+ binding.btnAadhaarFrontUpload.setOnClickListener {
+ selectImage()
+ }
+
+ binding.spTitle.onItemClickListener =
+ AdapterView.OnItemClickListener { parent, _, position, _ ->
+
+ val getCodes: GetCodes = parent.getItemAtPosition(position) as GetCodes
+ when (getCodes.Value) {
+ resources.getString(R.string.aadhar) ->
+ setAadharUploadLayout()
+ else -> {
+ setOtherUploadLayout(getCodes.Value)
+ }
+ }
+ }
+
+ titleApi()
return root
}
- private fun validate(): Boolean {
+ private fun selectImage() {
+ dialog = Dialog(activity as BajajFdMainActivity)
+ dialog.setContentView(R.layout.camera_gallery_layout)
+ val ivCut: ImageView = dialog.findViewById(R.id.ivCut)
+ val tvGallery: TextView = dialog.findViewById(R.id.tvGallery)
+ val tvCamera: TextView = dialog.findViewById(R.id.tvCamera)
+
+ ivCut.setOnClickListener {
+ dialog.cancel()
+ }
+
+ tvGallery.setOnClickListener {
+ dialog.cancel()
+ when {
+ ContextCompat.checkSelfPermission(
+ activity as BajajFdMainActivity,
+ Manifest.permission.READ_EXTERNAL_STORAGE
+ ) == PackageManager.PERMISSION_GRANTED -> {
+ selectImageIntent.launch("image/*")
+ }
+
+ ActivityCompat.shouldShowRequestPermissionRationale(
+ activity as BajajFdMainActivity,
+ Manifest.permission.READ_EXTERNAL_STORAGE
+ ) -> {
+ requestPermission.launch(
+ Manifest.permission.READ_EXTERNAL_STORAGE
+ )
+ }
+
+ else -> {
+ requestPermission.launch(
+ Manifest.permission.READ_EXTERNAL_STORAGE
+ )
+ }
+ }
+ }
+
+ tvCamera.setOnClickListener {
+ dialog.cancel()
+ when {
+ ContextCompat.checkSelfPermission(
+ activity as BajajFdMainActivity,
+ Manifest.permission.CAMERA
+ ) == PackageManager.PERMISSION_GRANTED -> {
+ takeImage()
+ }
+
+ ActivityCompat.shouldShowRequestPermissionRationale(
+ activity as BajajFdMainActivity,
+ Manifest.permission.CAMERA
+ ) -> {
+ requestPermission.launch(
+ Manifest.permission.CAMERA
+ )
+ }
+ else -> {
+ requestPermission.launch(
+ Manifest.permission.CAMERA
+ )
+ }
+ }
+ }
+
+ dialog.show()
+ dialog.window?.setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)
+ }
+
+ private fun checkCameraStoragePermission(
+ permission: String,
+ selectImageIntent: ActivityResultLauncher
+ ) {
+ TODO("Not yet implemented")
+ }
+
+ private fun setOtherUploadLayout(itemName: String) {
+ binding.tvAadhaarFront.text = itemName.plus(" Front *")
+ if (binding.tvAadhaarBack.visibility == View.VISIBLE) binding.tvAadhaarBack.visibility =
+ View.INVISIBLE
+ if (binding.btnAadhaarBackUpload.visibility == View.VISIBLE) binding.btnAadhaarBackUpload.visibility =
+ View.INVISIBLE
+ }
+
+ private fun setAadharUploadLayout() {
+ binding.tvAadhaarFront.text = resources.getString(R.string.aadhaarFront)
+ binding.tvAadhaarBack.text = resources.getString(R.string.aadhaarBack)
+
+ binding.tvAadhaarBack.visibility = View.VISIBLE
+ binding.btnAadhaarBackUpload.visibility = View.VISIBLE
+
+ binding.tvAadhaarFront.visibility = View.VISIBLE
+ binding.btnAadhaarFrontUpload.visibility = View.VISIBLE
+ }
+
+ private fun uploadDocument() {
+ if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) {
+ val documentUpload = DocumentUpload()
+ }
+ }
+
+ private fun titleApi() {
+ if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) {
+ val getCodeRequest = GetCodeRequest()
+ getCodeRequest.ProductName = getString(R.string.bajajFD)
+ getCodeRequest.Category = getString(R.string.docType)
+ getCodeRequest.Language = getString(R.string.language)
+ getCodeRequest.InputValue = ""
+ stepThreeBajajFDViewModel.titleApi(getCodeRequest, Constants.token)
+ stepThreeBajajFDViewModel.getTitleMutableData.observe(viewLifecycleOwner) { response ->
+ when (response) {
+ is Resource.Success -> {
+ Log.e("response", "-->$response")
+ val getCodeResponse: GetCodeResponse =
+ Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java)
+ getCodeResponse.Response.StatusCode.let { code ->
+ when (code) {
+ 200 -> {
+ listOfTitle = getCodeResponse.Response.GetCodesList
+ if (listOfTitle.isNotEmpty()) {
+ val adapter = ArrayAdapter(
+ activity as BajajFdMainActivity,
+ R.layout.spinner_dropdown,
+ listOfTitle
+ )
+ binding.spTitle.setAdapter(adapter)
+ binding.spTitle.setText(
+ adapter.getItem(0)?.Value,
+ false
+ )
+ setOtherUploadLayout(listOfTitle[0].Value)
+ }
+ }
+ // 650 -> refreshToken()
+ else -> {}
+ }
+ }
+ }
+
+ is Resource.Error -> {
+ response.message?.let { message ->
+ Log.e(" ", "An error occurred:$message")
+ }
+ }
+ is Resource.Loading -> {
+
+ }
+ }
+ }
+ }
+ }
+
+
+ private fun validate(): Boolean {
return false
}
+ private fun takeImage() {
+ lifecycleScope.launchWhenStarted {
+ getTmpFileUri().let { uri ->
+ latestTmpUri = uri
+ takeImageResult.launch(uri)
+ }
+ }
+ }
+
+ private fun getTmpFileUri(): Uri {
+ val tmpFile =
+ File.createTempFile("tmp_image_file", ".png", requireActivity().cacheDir).apply {
+ createNewFile()
+ deleteOnExit()
+ }
+
+ return FileProvider.getUriForFile(
+ requireActivity(),
+ "${BuildConfig.APPLICATION_ID}.provider",
+ tmpFile
+ )
+ }
+
override fun onDestroyView() {
super.onDestroyView()
_binding = null
diff --git a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepThreeBajajFDViewModel.kt b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepThreeBajajFDViewModel.kt
index 74522d4..ed0803b 100644
--- a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepThreeBajajFDViewModel.kt
+++ b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepThreeBajajFDViewModel.kt
@@ -2,6 +2,7 @@ package com.nivesh.production.bajajfd.viewModel
import androidx.lifecycle.*
import com.google.gson.JsonObject
+import com.nivesh.production.bajajfd.model.GetCodeRequest
import com.nivesh.production.bajajfd.model.GetRatesRequest
import com.nivesh.production.bajajfd.repositories.MainRepository
import com.nivesh.production.bajajfd.util.Resource
@@ -27,7 +28,12 @@ class StepThreeBajajFDViewModel(private val mainRepository: MainRepository) : Vi
}
-
+ val getTitleMutableData: MutableLiveData> = MutableLiveData()
+ fun titleApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch {
+ getTitleMutableData.postValue(Resource.Loading())
+ val response = mainRepository.titleCheck(getCodeRequest, token)
+ getTitleMutableData.postValue(handleRatesResponse(response))
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/camera.png b/app/src/main/res/drawable/camera.png
new file mode 100644
index 0000000..6ea6bca
Binary files /dev/null and b/app/src/main/res/drawable/camera.png differ
diff --git a/app/src/main/res/drawable/gallery.png b/app/src/main/res/drawable/gallery.png
new file mode 100644
index 0000000..d309f3e
Binary files /dev/null and b/app/src/main/res/drawable/gallery.png differ
diff --git a/app/src/main/res/drawable/svg_camera.xml b/app/src/main/res/drawable/svg_camera.xml
new file mode 100644
index 0000000..48a8a01
--- /dev/null
+++ b/app/src/main/res/drawable/svg_camera.xml
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/svg_close.xml b/app/src/main/res/drawable/svg_close.xml
new file mode 100644
index 0000000..844b6b6
--- /dev/null
+++ b/app/src/main/res/drawable/svg_close.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/drawable/svg_image.xml b/app/src/main/res/drawable/svg_image.xml
new file mode 100644
index 0000000..3ffb603
--- /dev/null
+++ b/app/src/main/res/drawable/svg_image.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/layout/camera_gallery_layout.xml b/app/src/main/res/layout/camera_gallery_layout.xml
new file mode 100644
index 0000000..7946852
--- /dev/null
+++ b/app/src/main/res/layout/camera_gallery_layout.xml
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_bajajfd_step_three.xml b/app/src/main/res/layout/fragment_bajajfd_step_three.xml
index d95444d..f951c15 100644
--- a/app/src/main/res/layout/fragment_bajajfd_step_three.xml
+++ b/app/src/main/res/layout/fragment_bajajfd_step_three.xml
@@ -81,6 +81,71 @@
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
+
+
+
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/btnPhotoUpload">
+ android:textSize="@dimen/text_size_14"
+ tools:layout_editor_absoluteY="230dp" />
+
+ app:layout_constraintStart_toStartOf="@+id/tvAadhaarBack"
+ app:layout_constraintTop_toTopOf="@+id/btnAadhaarFrontUpload" />
-
-
+ tools:ignore="DuplicateSpeakableTextCheck" />
+ app:layout_constraintTop_toBottomOf="@+id/btnAadhaarFrontUpload"
+ app:layout_constraintVertical_bias="0.0" />
+ app:layout_constraintBottom_toBottomOf="@+id/btnAadhaarBackUpload"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="@+id/btnAadhaarBackUpload"
+ app:layout_constraintVertical_bias="0.406" />
-
-
-
-
-
diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml
index 4eb9e1e..26ba4cc 100644
--- a/app/src/main/res/values-hi-rIN/strings.xml
+++ b/app/src/main/res/values-hi-rIN/strings.xml
@@ -166,6 +166,9 @@
PAN Upload *
Photo Upload *
Upload File
+ Photograph *
+ PAN *
+ Doctype
@@ -222,5 +225,7 @@
Select State
Select City
AnnualIncome
+ Aadhar
+
\ 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 ec6a357..d3704db 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -173,6 +173,8 @@
PAN Upload *
Photo Upload *
Upload File
+ Photograph *
+ PAN *
@@ -230,6 +232,11 @@
Select State
Select City
AnnualIncome
+ Doctype
+ AADHAR
+ Gallery
+ Camera
+ Select Option
diff --git a/app/src/main/res/xml/file_paths.xml b/app/src/main/res/xml/file_paths.xml
new file mode 100644
index 0000000..92d7b3a
--- /dev/null
+++ b/app/src/main/res/xml/file_paths.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file