From 55a3656439d436f81accf1c63bd4052e02174b61 Mon Sep 17 00:00:00 2001 From: Manoj Date: Wed, 4 Jan 2023 16:10:27 +0530 Subject: [PATCH] camera or gallery upload --- .../ui/fragment/StepThreeBajajFDFragment.kt | 197 +++++++++--------- .../layout/fragment_bajajfd_step_three.xml | 10 - app/src/main/res/values/strings.xml | 7 - 3 files changed, 104 insertions(+), 110 deletions(-) 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 8ea3c27..870ecc0 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 @@ -6,10 +6,8 @@ import android.app.ActionBar.LayoutParams import android.app.Dialog import android.content.pm.PackageManager import android.database.Cursor -import android.graphics.Bitmap import android.net.Uri import android.os.Bundle -import android.provider.MediaStore import android.provider.OpenableColumns import android.text.Editable import android.util.Base64 @@ -17,17 +15,11 @@ 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 android.widget.Toast +import android.widget.* 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.lifecycleScope import com.google.gson.Gson import com.nivesh.production.bajajfd.BuildConfig @@ -57,6 +49,13 @@ class StepThreeBajajFDFragment : BaseFragment() { private var uniqueId: String? = "" private lateinit var dialog: Dialog private lateinit var front: String + private var takeImageResult: ActivityResultLauncher? = null + private var selectImageIntent: ActivityResultLauncher? = null + private var fileExt: String? = null + private val mapImage: HashMap = HashMap() + private var selectdImage: String? = null + private var checkPANUploadFile: Boolean? = false + private var checkPhotoUploadFile: Boolean? = false companion object { fun getInstance(fdInterface: BajajFDInterface): StepThreeBajajFDFragment { @@ -70,22 +69,6 @@ class StepThreeBajajFDFragment : BaseFragment() { 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(uri) - } - } - } - private val requestPermission = registerForActivityResult( ActivityResultContracts.RequestPermission() ) { isGranted: Boolean -> @@ -106,9 +89,29 @@ class StepThreeBajajFDFragment : BaseFragment() { val root = binding.root stepThreeBajajFDViewModel = (activity as BajajFdMainActivity).stepThreeBajajFDViewModel + selectImageIntent = registerForActivityResult(ActivityResultContracts.GetContent()) + { uri: Uri? -> + if (uri != null) { + uploadDocument(uri) + } + } + + takeImageResult = + registerForActivityResult(ActivityResultContracts.TakePicture()) { isSuccess -> + if (isSuccess) { + latestTmpUri?.let { uri -> + uploadDocument(uri) + } + } + } + binding.btnNext.setOnClickListener { if (validate()) { - uploadDocApi() + var uploadPosition = 0 + for (entry in mapImage.iterator()) { + uploadPosition++ + uploadDocApi(entry.key, entry.value, uploadPosition) + } // // bajajFDInterface.stepThreeApi((activity as BajajFdMainActivity).createFDRequest) } @@ -117,8 +120,28 @@ class StepThreeBajajFDFragment : BaseFragment() { (activity as BajajFdMainActivity).binding.viewPager.currentItem = 1 } + binding.btnPANUpload.setOnClickListener { + checkPANUploadFile = true + checkPhotoUploadFile = false + selectImage("PAN") + } + + binding.btnPhotoUpload.setOnClickListener { + checkPhotoUploadFile = true + checkPANUploadFile = false + selectImage("Photograph") + } + binding.btnAadhaarFrontUpload.setOnClickListener { - selectImage() + checkPANUploadFile = false + checkPhotoUploadFile = false + selectImage(binding.spDocType.text.toString()) + } + + binding.btnAadhaarBackUpload.setOnClickListener { + checkPANUploadFile = false + checkPhotoUploadFile = false + selectImage(binding.spDocType.text.toString()) } binding.spDocType.onItemClickListener = @@ -162,7 +185,8 @@ class StepThreeBajajFDFragment : BaseFragment() { return result } - private fun selectImage() { + private fun selectImage(fileType: String) { + selectdImage = fileType dialog = Dialog(activity as BajajFdMainActivity) dialog.setContentView(R.layout.camera_gallery_layout) val ivCut: ImageView = dialog.findViewById(R.id.ivCut) @@ -175,55 +199,31 @@ class StepThreeBajajFDFragment : BaseFragment() { tvGallery.setOnClickListener { dialog.cancel() - when { - ContextCompat.checkSelfPermission( - activity as BajajFdMainActivity, + val permission = ContextCompat.checkSelfPermission( + activity as BajajFdMainActivity, + Manifest.permission.READ_EXTERNAL_STORAGE + ) + if (permission == PackageManager.PERMISSION_GRANTED) { + selectImageIntent?.launch("image/*") + } else { + requestPermission.launch( 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, + val permission = ContextCompat.checkSelfPermission( + activity as BajajFdMainActivity, + Manifest.permission.CAMERA + ) + if (permission == PackageManager.PERMISSION_GRANTED) { + takeImage() + } else { + requestPermission.launch( Manifest.permission.CAMERA - ) -> { - requestPermission.launch( - Manifest.permission.CAMERA - ) - } - - else -> { - requestPermission.launch( - Manifest.permission.CAMERA - ) - } + ) } } @@ -261,13 +261,19 @@ class StepThreeBajajFDFragment : BaseFragment() { if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { val documentUpload = DocumentUpload() val value: Editable? = binding.spDocType.text - val file_dir:File = requireActivity().cacheDir + val file_dir: File = requireActivity().cacheDir val file_ex = File(file_dir.toString().plus("/").plus(getFileName(uri))) + fileExt = file_ex.extension var file_path: File? = uri.path?.let { File(it) } encodedFileToBase64(file_ex) - Log.e("check_data_front", value.toString()+"\n"+front) -// documentUpload.DocumentType = + if (checkPANUploadFile == true || checkPhotoUploadFile == true) { + mapImage["Main ".plus(selectdImage)] = front + } else { + selectdImage?.let { mapImage.put(it, front) } + } + + Log.e("check_data_front", value.toString() + "\n" + front) } } @@ -301,31 +307,37 @@ class StepThreeBajajFDFragment : BaseFragment() { return bytes } - private fun uploadDocApi(){ - if(Common.isNetworkAvailable((activity as BajajFdMainActivity))){ + private fun uploadDocApi(key: String, imageBase64: String, uploadPosition: Int) { + if (Common.isNetworkAvailable((activity as BajajFdMainActivity))) { val du = DocumentUpload() - du.Description = "PAN" - du.DocumentType = "PAN" - du.FDProvider = "Bajaj" - du.ImageEncodeToBase64 = front //"data:image/png;base64" - du.NiveshClientCode = (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE + du.Description = key + du.DocumentType = key + du.FDProvider = getString(R.string.bajaj) + du.ImageEncodeToBase64 = + "data:image/" + "." + fileExt + ";base64,".plus(imageBase64) //"data:image/png;base64" + du.NiveshClientCode = + (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE du.UniqueId = uniqueId - stepThreeBajajFDViewModel.documentsUpload(du,Constants.token) + stepThreeBajajFDViewModel.documentsUpload(du, Constants.token) - val gson = Gson() - val jsonString = gson.toJson(DocumentUpload()) - Log.e("check_request_json",jsonString) - - stepThreeBajajFDViewModel.getDocumentUploadMutableData.observe(viewLifecycleOwner){ response -> - when (response){ - is Resource.Success ->{ + stepThreeBajajFDViewModel.getDocumentUploadMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { Log.e("response", "-->$response") val getUploadResponse: UploadResponse = - Gson().fromJson(response.data?.toString(),UploadResponse::class.java) + Gson().fromJson(response.data?.toString(), UploadResponse::class.java) getUploadResponse.Response.StatusCode.let { code -> when (code) { 200 -> { - Log.e("check_upload_res",response.message.toString()) + Log.e("check_upload_res", response.message.toString()) +// if (uploadPosition == mapImage.size) { + Toast.makeText( + requireActivity(), + "".plus(mapImage.size.toString() + " Last Image Uploaded ") + + uploadPosition, + Toast.LENGTH_LONG + ).show() +// } } // 650 -> refreshToken() else -> {} @@ -343,7 +355,6 @@ class StepThreeBajajFDFragment : BaseFragment() { } } } - } } @@ -412,7 +423,7 @@ class StepThreeBajajFDFragment : BaseFragment() { lifecycleScope.launchWhenStarted { getTmpFileUri().let { uri -> latestTmpUri = uri - takeImageResult.launch(uri) + takeImageResult?.launch(uri) } } } @@ -438,6 +449,6 @@ class StepThreeBajajFDFragment : BaseFragment() { } fun displayReceivedData(createFDApplicationResponse: CreateFDApplicationResponse) { - uniqueId = createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId + uniqueId = createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId } } \ 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 1e251d4..414f457 100644 --- a/app/src/main/res/layout/fragment_bajajfd_step_three.xml +++ b/app/src/main/res/layout/fragment_bajajfd_step_three.xml @@ -234,16 +234,6 @@ app:layout_constraintTop_toTopOf="@+id/btnAadhaarBackUpload" app:layout_constraintVertical_bias="0.406" /> - - diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d4243c5..cc8f64b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -248,11 +248,4 @@ CustomerCategory PAY - - Aadhaar Card - PAN - Voter Id - Driving Licence - - \ No newline at end of file