From 38f8420ed4b2077f74a386d36cdc65e43baf1b97 Mon Sep 17 00:00:00 2001 From: Hemant Khadase Date: Wed, 4 Jan 2023 16:35:54 +0530 Subject: [PATCH] added minor changes --- .../ui/fragment/StepThreeBajajFDFragment.kt | 239 +++++++++--------- 1 file changed, 122 insertions(+), 117 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 e6dcb59..e57c40a 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,28 +6,19 @@ 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 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 @@ -54,9 +45,18 @@ class StepThreeBajajFDFragment : BaseFragment() { private lateinit var bajajFDInterface: BajajFDInterface private lateinit var stepThreeBajajFDViewModel: StepThreeBajajFDViewModel - private var uniqueId: String? = "" + private lateinit var dialog: Dialog + private var takeImageResult: ActivityResultLauncher? = null + private var selectImageIntent: ActivityResultLauncher? = null + private val mapImage: HashMap = HashMap() + private var front: String = "" + private var fileExt: String? = "" + private var uniqueId: String? = "" + private var selectedImage: String? = "" + private var checkPANUploadFile: Boolean? = false + private var checkPhotoUploadFile: Boolean? = false companion object { fun getInstance(fdInterface: BajajFDInterface): StepThreeBajajFDFragment { @@ -70,22 +70,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,19 +90,61 @@ 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() - // - bajajFDInterface.stepThreeApi((activity as BajajFdMainActivity).createFDRequest) + var uploadPosition = 0 + for (entry in mapImage.iterator()) { + uploadPosition++ + if (entry.key.contains("Main ")) { + uploadDocApi(entry.key.replace("Main ", ""), entry.value, uploadPosition) + } else { + uploadDocApi(entry.key, entry.value, uploadPosition) + } + } } } binding.btnBack.setOnClickListener { (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 = @@ -140,21 +166,19 @@ class StepThreeBajajFDFragment : BaseFragment() { @SuppressLint("Range") fun getFileName(uri: Uri): String { - var result: String? = null + var result = "" if (uri.scheme == "content") { val cursor: Cursor = - requireActivity().getContentResolver().query(uri, null, null, null, null)!! - try { - if (cursor != null && cursor.moveToFirst()) { - result = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)) + requireActivity().contentResolver.query(uri, null, null, null, null)!! + cursor.use { cursor1 -> + if (cursor1.moveToFirst()) { + result = cursor1.getString(cursor1.getColumnIndex(OpenableColumns.DISPLAY_NAME)) } - } finally { - cursor.close() } } - if (result == null) { - result = uri.path - val cut = result!!.lastIndexOf('/') + if (result.isEmpty()) { + result = uri.path!! + val cut = result.lastIndexOf('/') if (cut != -1) { result = result.substring(cut + 1) } @@ -162,7 +186,8 @@ class StepThreeBajajFDFragment : BaseFragment() { return result } - private fun selectImage() { + private fun selectImage(fileType: String) { + selectedImage = fileType dialog = Dialog(activity as BajajFdMainActivity) dialog.setContentView(R.layout.camera_gallery_layout) val ivCut: ImageView = dialog.findViewById(R.id.ivCut) @@ -175,55 +200,31 @@ class StepThreeBajajFDFragment : BaseFragment() { 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, + 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 - ) -> { - 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 - ) - } + ) } } @@ -231,13 +232,6 @@ class StepThreeBajajFDFragment : BaseFragment() { 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 = @@ -259,15 +253,15 @@ class StepThreeBajajFDFragment : BaseFragment() { private fun uploadDocument(uri: Uri) { if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { - val documentUpload = DocumentUpload() - val value: Editable? = binding.spDocType.text - val file_dir:File = requireActivity().cacheDir - val file_ex = File(file_dir.toString().plus("/").plus(getFileName(uri))) - var file_path: File? = uri.path?.let { File(it) } - encodedFileToBase64(file_ex) - - Log.e("check_data_front", value.toString()+"\n"+front) -// documentUpload.DocumentType = + val fileDir: File = requireActivity().cacheDir + val fileExtension = File(fileDir.toString().plus("/").plus(getFileName(uri))) + fileExt = fileExtension.extension + encodedFileToBase64(fileExtension) + if (checkPANUploadFile == true || checkPhotoUploadFile == true) { + mapImage["Main ".plus(selectedImage)] = front + } else { + selectedImage?.let { mapImage.put(it, front) } + } } } @@ -283,7 +277,7 @@ class StepThreeBajajFDFragment : BaseFragment() { } @Throws(IOException::class) - private fun loadFile(file: File): ByteArray? { + private fun loadFile(file: File): ByteArray { val inputStream: InputStream = FileInputStream(file) val length = file.length() val bytes = ByteArray(length.toInt()) @@ -301,26 +295,38 @@ 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.Description = key + du.DocumentType = key du.FDProvider = getString(R.string.bajaj) - du.ImageEncodeToBase64 = front //"data:image/png;base64" - du.NiveshClientCode = (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE + 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.getDocumentUploadMutableData.observe(viewLifecycleOwner){ response -> - when (response){ - is Resource.Success ->{ - Log.e("response", "-->$response") + stepThreeBajajFDViewModel.documentsUpload(du, Constants.token) + + stepThreeBajajFDViewModel.getDocumentUploadMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + Log.e("UploadImage", "Response-->"+response.data.toString()) 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() + bajajFDInterface.stepThreeApi((activity as BajajFdMainActivity).createFDRequest) + } } // 650 -> refreshToken() else -> { @@ -343,7 +349,6 @@ class StepThreeBajajFDFragment : BaseFragment() { } } } - } } @@ -412,7 +417,7 @@ class StepThreeBajajFDFragment : BaseFragment() { lifecycleScope.launchWhenStarted { getTmpFileUri().let { uri -> latestTmpUri = uri - takeImageResult.launch(uri) + takeImageResult?.launch(uri) } } } @@ -438,6 +443,6 @@ class StepThreeBajajFDFragment : BaseFragment() { } fun displayReceivedData(createFDApplicationResponse: CreateFDApplicationResponse) { - uniqueId = createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId + uniqueId = createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId } } \ No newline at end of file