Browse Source

Merge branch 'HemantBranch' of https://git.nivesh.com:443/hemant.khadase/BajajFDLib into ManojBranch

# Conflicts:
#	app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt
PankajBranch
Manoj 2 years ago
parent
commit
a5dda905f7
10 changed files with 281 additions and 140 deletions
  1. +34
    -23
      app/src/main/java/com/nivesh/production/bajajfd/adapter/BankListAdapter.kt
  2. +5
    -5
      app/src/main/java/com/nivesh/production/bajajfd/model/BankValidationApiRequest.kt
  3. +7
    -7
      app/src/main/java/com/nivesh/production/bajajfd/model/ClientBanklist.kt
  4. +1
    -1
      app/src/main/java/com/nivesh/production/bajajfd/model/GetCodes.kt
  5. +75
    -82
      app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt
  6. +92
    -19
      app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt
  7. +22
    -0
      app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt
  8. +15
    -0
      app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepTwoBajajFDViewModel.kt
  9. +5
    -0
      app/src/main/res/drawable/ic_minus.xml
  10. +25
    -3
      app/src/main/res/layout/fragment_bajajfd_step_two.xml

+ 34
- 23
app/src/main/java/com/nivesh/production/bajajfd/adapter/BankListAdapter.kt View File

@ -12,7 +12,8 @@ import com.nivesh.production.bajajfd.model.ClientBanklist
class BankListAdapter( class BankListAdapter(
private val bankList: List<ClientBanklist>?, private val bankList: List<ClientBanklist>?,
private val selectedAccount: String? = null
private val selectedAccount: String? = null,
private val width:Double?
) : RecyclerView.Adapter<BankListAdapter.BankListViewHolder>() { ) : RecyclerView.Adapter<BankListAdapter.BankListViewHolder>() {
inner class BankListViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { inner class BankListViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val bankSelector: ImageView = itemView.findViewById(R.id.bankSelector) val bankSelector: ImageView = itemView.findViewById(R.id.bankSelector)
@ -27,13 +28,23 @@ class BankListAdapter(
parent: ViewGroup, parent: ViewGroup,
viewType: Int viewType: Int
): BankListViewHolder { ): BankListViewHolder {
return BankListViewHolder(
LayoutInflater.from(parent.context).inflate(
R.layout.item_bank_list_preview,
parent,
false
)
)
// return BankListViewHolder(
// LayoutInflater.from(parent.context).inflate(
// R.layout.item_bank_list_preview,
// parent,
// false
// )
// )
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_bank_list_preview, parent, false);
view.layoutParams = width?.div(1.35)
?.let { ViewGroup.LayoutParams(it.toInt(),ViewGroup.LayoutParams.WRAP_CONTENT) }
return BankListViewHolder(view)
} }
override fun onBindViewHolder(holder: BankListViewHolder, position: Int) { override fun onBindViewHolder(holder: BankListViewHolder, position: Int) {
@ -44,28 +55,28 @@ class BankListAdapter(
holder.tvBankIFSC.text = bankList.IFSCCode holder.tvBankIFSC.text = bankList.IFSCCode
holder.tvBankAccountNumber.text = bankList.AccountNumber holder.tvBankAccountNumber.text = bankList.AccountNumber
if (selectedAccount == bankList.AccountNumber && checkedPosition == -2
) {
if (selectedAccount == bankList.AccountNumber && (checkedPosition == -2))
{
holder.bankSelector.setBackgroundResource(R.drawable.ic_select_green) holder.bankSelector.setBackgroundResource(R.drawable.ic_select_green)
checkedPosition = holder.adapterPosition checkedPosition = holder.adapterPosition
} else if (checkedPosition == -1) {
}
else if (checkedPosition == -1) {
holder.bankSelector.setBackgroundResource(R.drawable.ic_select_outline) holder.bankSelector.setBackgroundResource(R.drawable.ic_select_outline)
} else if (checkedPosition == holder.adapterPosition) {
}
else if (checkedPosition == holder.adapterPosition) {
holder.bankSelector.setBackgroundResource(R.drawable.ic_select_green) holder.bankSelector.setBackgroundResource(R.drawable.ic_select_green)
} else {
holder.bankSelector.setBackgroundResource(R.drawable.ic_select_outline)
} }
setOnClickListener {
onItemClickListener?.let {
it(bankList)
holder.bankSelector.setBackgroundResource(R.drawable.ic_select_green)
if (checkedPosition != holder.adapterPosition) {
notifyItemChanged(checkedPosition)
checkedPosition = holder.adapterPosition
else {
holder.bankSelector.setBackgroundResource(R.drawable.ic_select_outline)
}
}
holder.itemView.setOnClickListener {
holder.bankSelector.setBackgroundResource(R.drawable.ic_select_green)
if (checkedPosition != holder.adapterPosition) {
notifyItemChanged(checkedPosition)
checkedPosition = holder.adapterPosition
} }
} }
} }


+ 5
- 5
app/src/main/java/com/nivesh/production/bajajfd/model/BankValidationApiRequest.kt View File

@ -2,9 +2,9 @@ package com.nivesh.production.bajajfd.model
data class BankValidationApiRequest( data class BankValidationApiRequest(
var BankAccountNo: String?="", var BankAccountNo: String?="",
val BankNo: Int?= 0,
val IFSC: String?= "",
val Name: String? = "",
val PhoneNo: String? = "",
val RoleId: Int? = 0
var BankNo: Int?= 0,
var IFSC: String?= "",
var Name: String? = "",
var PhoneNo: String? = "",
var RoleId: Int? = 0
) )

+ 7
- 7
app/src/main/java/com/nivesh/production/bajajfd/model/ClientBanklist.kt View File

@ -1,11 +1,11 @@
package com.nivesh.production.bajajfd.model package com.nivesh.production.bajajfd.model
data class ClientBanklist( data class ClientBanklist(
val AccountNumber: String?,
val AccountType: String?,
val BankName: String?,
val BranchName: String?,
val DefaultBankFlag: String?,
val IFSCCode: String?,
val IsValBank: Int? = 0
var AccountNumber: String?="",
var AccountType: String?="",
var BankName: String?="",
var BranchName: String?="",
val DefaultBankFlag: String?="",
var IFSCCode: String?="",
var IsValBank: Int? = 0
) )

+ 1
- 1
app/src/main/java/com/nivesh/production/bajajfd/model/GetCodes.kt View File

@ -2,7 +2,7 @@ package com.nivesh.production.bajajfd.model
data class GetCodes( data class GetCodes(
val Label: String, val Label: String,
val Value: String,
var Value: String,
var isSelected : Boolean var isSelected : Boolean
) { ) {
override fun toString(): String { override fun toString(): String {


+ 75
- 82
app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt View File

@ -4,13 +4,11 @@ import android.Manifest
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.ActionBar.LayoutParams import android.app.ActionBar.LayoutParams
import android.app.Dialog import android.app.Dialog
import android.content.Intent
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.database.Cursor import android.database.Cursor
import android.graphics.Bitmap import android.graphics.Bitmap
import android.graphics.BitmapFactory import android.graphics.BitmapFactory
import android.net.Uri import android.net.Uri
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.provider.OpenableColumns import android.provider.OpenableColumns
import android.util.Base64 import android.util.Base64
@ -21,7 +19,6 @@ import android.view.ViewGroup
import android.widget.* import android.widget.*
import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.annotation.RequiresApi
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.content.FileProvider import androidx.core.content.FileProvider
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
@ -36,6 +33,7 @@ import com.nivesh.production.bajajfd.repositories.MainRepository
import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity
import com.nivesh.production.bajajfd.ui.providerfactory.StepThreeModelProviderFactory import com.nivesh.production.bajajfd.ui.providerfactory.StepThreeModelProviderFactory
import com.nivesh.production.bajajfd.util.Common import com.nivesh.production.bajajfd.util.Common
import com.nivesh.production.bajajfd.util.Common.Companion.getFileExtension
import com.nivesh.production.bajajfd.util.Constants import com.nivesh.production.bajajfd.util.Constants
import com.nivesh.production.bajajfd.util.ImageUtil import com.nivesh.production.bajajfd.util.ImageUtil
import com.nivesh.production.bajajfd.util.Resource import com.nivesh.production.bajajfd.util.Resource
@ -45,42 +43,33 @@ import java.io.*
class StepThreeBajajFDFragment : BaseFragment() { class StepThreeBajajFDFragment : BaseFragment() {
var bitmap: Bitmap? = null
private var bitmap: Bitmap? = null
private var latestTmpUri: Uri? = null private var latestTmpUri: Uri? = null
private var _binding: FragmentBajajfdStepThreeBinding? = null private var _binding: FragmentBajajfdStepThreeBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
private lateinit var listOfDocType: List<GetCodes> private lateinit var listOfDocType: List<GetCodes>
lateinit var getCodes: GetCodes
private var docValue: String = ""
private lateinit var stepThreeBajajFDViewModel: StepThreeBajajFDViewModel
private lateinit var stepThreeBajajFDViewModel: StepThreeBajajFDViewModel
private lateinit var dialog: Dialog private lateinit var dialog: Dialog
private var takeImageResult: ActivityResultLauncher<Uri>? = null private var takeImageResult: ActivityResultLauncher<Uri>? = null
private var selectImageIntent: ActivityResultLauncher<String>? = null private var selectImageIntent: ActivityResultLauncher<String>? = null
private var launcher:ActivityResultLauncher<Intent>? = null
private var panString: String = "" private var panString: String = ""
private var photoString: String = "" private var photoString: String = ""
private var docString: String = "" private var docString: String = ""
private var docString2: String = "" private var docString2: String = ""
private var panFileExt: String? = "" private var panFileExt: String? = ""
private var photoFileExt: String? = "" private var photoFileExt: String? = ""
private var doc1FileExt: String? = "" private var doc1FileExt: String? = ""
private var doc2fileExt: String? = "" private var doc2fileExt: String? = ""
private var uniqueId: String? = "" private var uniqueId: String? = ""
// private var actionType: AccountCaptureType? = null
//
// enum class AccountCaptureType {
// MAIN_PAN_UPLOAD, MAIN_PHOTO_UPLOAD, FIRST_UPLOAD, SECOND_UPLOAD
// }
val MAIN_PAN_UPLOAD: Int = 1
val MAIN_PHOTO_UPLOAD: Int = 2
val FIRST_UPLOAD: Int = 3
val SECOND_UPLOAD: Int = 4
var actionType: Int = -1
private val MAIN_PAN_UPLOAD: Int = 1
private val MAIN_PHOTO_UPLOAD: Int = 2
private val FIRST_UPLOAD: Int = 3
private val SECOND_UPLOAD: Int = 4
private var actionType: Int = -1
private val requestPermission = registerForActivityResult( private val requestPermission = registerForActivityResult(
ActivityResultContracts.RequestPermission() ActivityResultContracts.RequestPermission()
@ -101,7 +90,6 @@ class StepThreeBajajFDFragment : BaseFragment() {
return binding.root return binding.root
} }
@RequiresApi(Build.VERSION_CODES.P)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
stepThreeBajajFDViewModel = ViewModelProvider( stepThreeBajajFDViewModel = ViewModelProvider(
@ -126,27 +114,11 @@ class StepThreeBajajFDFragment : BaseFragment() {
} }
} }
//
// launcher = registerForActivityResult(
// ActivityResultContracts.StartActivityForResult()
// ) { result: ActivityResult ->
// if (result.resultCode == Activity.RESULT_OK
// && result.data != null
// ) {
// val photoUri = result.data!!.data
// if (photoUri != null) {
// uploadDocument(photoUri)
// }
////use photoUri here
// }
// }
//
binding.btnNext.setOnClickListener { binding.btnNext.setOnClickListener {
if (validate()) { if (validate()) {
uploadDocApi( uploadDocApi(
"PAN", "PAN",
"data:image/.".plus(panFileExt).plus(";base64").plus(panString),
"data:image/".plus(panFileExt).plus(";base64, ").plus(panString),
1 1
) )
} }
@ -177,7 +149,8 @@ class StepThreeBajajFDFragment : BaseFragment() {
binding.spDocType.onItemClickListener = binding.spDocType.onItemClickListener =
AdapterView.OnItemClickListener { parent, _, position, _ -> AdapterView.OnItemClickListener { parent, _, position, _ ->
getCodes = parent.getItemAtPosition(position) as GetCodes
val getCodes : GetCodes = parent.getItemAtPosition(position) as GetCodes
docValue = getCodes.Value
docString = "" docString = ""
docString2 = "" docString2 = ""
when (getCodes.Label) { when (getCodes.Label) {
@ -232,9 +205,6 @@ class StepThreeBajajFDFragment : BaseFragment() {
Manifest.permission.READ_EXTERNAL_STORAGE Manifest.permission.READ_EXTERNAL_STORAGE
) )
if (permission == PackageManager.PERMISSION_GRANTED) { if (permission == PackageManager.PERMISSION_GRANTED) {
// val intent =
// Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
// launcher?.launch(intent)
selectImageIntent?.launch("image/*") selectImageIntent?.launch("image/*")
} else { } else {
requestPermission.launch( requestPermission.launch(
@ -262,7 +232,7 @@ class StepThreeBajajFDFragment : BaseFragment() {
dialog.window?.setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT) dialog.window?.setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)
} }
private fun setOtherUploadLayout(itemName: String) {
private fun setOtherUploadLayout(itemName: String?) {
binding.tvAadhaarFront.text = itemName.plus(" Front *") binding.tvAadhaarFront.text = itemName.plus(" Front *")
if (binding.tvAadhaarBack.visibility == View.VISIBLE) binding.tvAadhaarBack.visibility = if (binding.tvAadhaarBack.visibility == View.VISIBLE) binding.tvAadhaarBack.visibility =
View.INVISIBLE View.INVISIBLE
@ -287,77 +257,98 @@ class StepThreeBajajFDFragment : BaseFragment() {
binding.ivPan.visibility = View.VISIBLE binding.ivPan.visibility = View.VISIBLE
val fileDir: File = requireActivity().cacheDir val fileDir: File = requireActivity().cacheDir
val fileExtension = File(fileDir.toString().plus("/").plus(getFileName(uri))) val fileExtension = File(fileDir.toString().plus("/").plus(getFileName(uri)))
panFileExt = fileExtension.extension
if(type == "c") encodedPANBase64(fileExtension)
else panString = bitmap?.let { ImageUtil.convert(it) }.toString()
panFileExt = getFileExtension(getFileName(uri))
val size : Double = Common.getFileSizeInMB(fileExtension.length())
if (size < 5){
if(type == "c") encodedPANBase64(fileExtension)
else panString = bitmap?.let { ImageUtil.convert(it) }.toString()
} else{
panString = ""
panFileExt = ""
}
} }
MAIN_PHOTO_UPLOAD -> { MAIN_PHOTO_UPLOAD -> {
binding.ivPhotograph.visibility = View.VISIBLE binding.ivPhotograph.visibility = View.VISIBLE
binding.ivPan.visibility = View.VISIBLE binding.ivPan.visibility = View.VISIBLE
val fileDir: File = requireActivity().cacheDir val fileDir: File = requireActivity().cacheDir
val fileExtension = File(fileDir.toString().plus("/").plus(getFileName(uri))) val fileExtension = File(fileDir.toString().plus("/").plus(getFileName(uri)))
photoFileExt = fileExtension.extension
if(type == "c") encodedPhotoBase64(fileExtension)
else photoString = bitmap?.let { ImageUtil.convert(it) }.toString()
photoFileExt = getFileExtension(getFileName(uri))
val size : Double = Common.getFileSizeInMB(fileExtension.length())
if (size < 5) {
if (type == "c") encodedPhotoBase64(fileExtension)
else photoString = bitmap?.let { ImageUtil.convert(it) }.toString()
}else{
photoString = ""
photoFileExt = ""
}
} }
FIRST_UPLOAD -> { FIRST_UPLOAD -> {
binding.ivAadharFront.visibility = View.VISIBLE binding.ivAadharFront.visibility = View.VISIBLE
val fileDir: File = requireActivity().cacheDir val fileDir: File = requireActivity().cacheDir
val fileExtension = File(fileDir.toString().plus("/").plus(getFileName(uri))) val fileExtension = File(fileDir.toString().plus("/").plus(getFileName(uri)))
doc1FileExt = fileExtension.extension
if(type == "c") encodedUpload1Base64(fileExtension)
else docString = bitmap?.let { ImageUtil.convert(it) }.toString()
doc1FileExt = getFileExtension(getFileName(uri))
val size : Double = Common.getFileSizeInMB(fileExtension.length())
if (size < 5) {
if (type == "c") encodedUpload1Base64(fileExtension)
else docString = bitmap?.let { ImageUtil.convert(it) }.toString()
}else{
docString = ""
doc1FileExt = ""
}
} }
else -> { else -> {
binding.ivAadharBack.visibility = View.VISIBLE binding.ivAadharBack.visibility = View.VISIBLE
val fileDir: File = requireActivity().cacheDir val fileDir: File = requireActivity().cacheDir
val fileExtension = File(fileDir.toString().plus("/").plus(getFileName(uri))) val fileExtension = File(fileDir.toString().plus("/").plus(getFileName(uri)))
doc2fileExt = fileExtension.extension
if(type == "c") encodedFileToBase64(fileExtension)
else docString2 = bitmap?.let { ImageUtil.convert(it) }.toString()
doc2fileExt = getFileExtension(getFileName(uri))
val size : Double = Common.getFileSizeInMB(fileExtension.length())
if (size < 5) {
if (type == "c") encodedFileToBase64(fileExtension)
else docString2 = bitmap?.let { ImageUtil.convert(it) }.toString()
}else{
docString2 = ""
doc2fileExt = ""
}
} }
} }
} }
private fun encodedPANBase64(fileName: File?) {
private fun encodedPANBase64(fileName: File) {
panString = try { panString = try {
val bytes: ByteArray? = fileName?.let { loadFile(it) }
Base64.encodeToString(bytes, Base64.DEFAULT).trim { it <= ' ' }
.replace("\n".toRegex(), "").replace("\\s+".toRegex(), "")
val bytes: ByteArray = loadFile(fileName)
Base64.encodeToString(bytes, Base64.DEFAULT).trim().replace("\n", "").replace("\\s+", "")
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
"" ""
} }
} }
private fun encodedPhotoBase64(fileName: File?) {
private fun encodedPhotoBase64(fileName: File) {
photoString = try { photoString = try {
val bytes: ByteArray? = fileName?.let { loadFile(it) }
Base64.encodeToString(bytes, Base64.DEFAULT).trim { it <= ' ' }
.replace("\n".toRegex(), "").replace("\\s+".toRegex(), "")
val bytes: ByteArray = loadFile(fileName)
Base64.encodeToString(bytes, Base64.DEFAULT).trim().replace("\n", "").replace("\\s+", "")
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
"" ""
} }
} }
private fun encodedUpload1Base64(fileName: File?) {
private fun encodedUpload1Base64(fileName: File) {
docString = try { docString = try {
val bytes: ByteArray? = fileName?.let { loadFile(it) }
Base64.encodeToString(bytes, Base64.DEFAULT).trim { it <= ' ' }
.replace("\n".toRegex(), "").replace("\\s+".toRegex(), "")
val bytes: ByteArray = loadFile(fileName)
Base64.encodeToString(bytes, Base64.DEFAULT).trim().replace("\n", "").replace("\\s+", "")
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
"" ""
} }
} }
private fun encodedFileToBase64(fileName: File?) {
private fun encodedFileToBase64(fileName: File) {
docString2 = try { docString2 = try {
val bytes: ByteArray? = fileName?.let { loadFile(it) }
Base64.encodeToString(bytes, Base64.DEFAULT).trim { it <= ' ' }
.replace("\n".toRegex(), "").replace("\\s+".toRegex(), "")
val bytes: ByteArray = loadFile(fileName)
Base64.encodeToString(bytes, Base64.DEFAULT).trim().replace("\n", "").replace("\\s+", "")
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
"" ""
@ -410,22 +401,22 @@ class StepThreeBajajFDFragment : BaseFragment() {
if (uploadPosition == 1) { if (uploadPosition == 1) {
uploadDocApi( uploadDocApi(
"Photograph", "Photograph",
"data:image/.".plus(photoFileExt).plus(";base64")
"data:image/".plus(photoFileExt).plus(";base64, ")
.plus(photoString), .plus(photoString),
2 2
) )
} else if (uploadPosition == 2) { } else if (uploadPosition == 2) {
uploadDocApi( uploadDocApi(
getCodes.Value,
"data:image/.".plus(doc1FileExt).plus(";base64")
docValue,
"data:image/".plus(doc1FileExt).plus(";base64, ")
.plus(docString), .plus(docString),
3 3
) )
} else if (uploadPosition == 3) { } else if (uploadPosition == 3) {
if (getCodes.Value == "Aadhar") {
if (docValue == "Aadhar") {
uploadDocApi( uploadDocApi(
getCodes.Value,
"data:image/.".plus(doc2fileExt).plus(";base64")
docValue,
"data:image/".plus(doc2fileExt).plus(";base64, ")
.plus(docString2), .plus(docString2),
4 4
) )
@ -441,7 +432,7 @@ class StepThreeBajajFDFragment : BaseFragment() {
else -> { else -> {
Common.showDialogValidation( Common.showDialogValidation(
activity as BajajFdMainActivity, activity as BajajFdMainActivity,
getUploadResponse.Response.Message
getUploadResponse.Response.Errors[0].ErrorMessage
) )
} }
} }
@ -545,7 +536,9 @@ class StepThreeBajajFDFragment : BaseFragment() {
adapter.getItem(0)?.Value, adapter.getItem(0)?.Value,
false false
) )
setOtherUploadLayout(listOfDocType[0].Value)
setOtherUploadLayout(adapter.getItem(0)?.Value)
docValue = adapter.getItem(0)?.Value.toString()
} }
} }
// 650 -> refreshToken() // 650 -> refreshToken()
@ -592,10 +585,10 @@ class StepThreeBajajFDFragment : BaseFragment() {
} else if (docString.isEmpty()) { } else if (docString.isEmpty()) {
Common.showDialogValidation( Common.showDialogValidation(
activity as BajajFdMainActivity, activity as BajajFdMainActivity,
"Upload " + getCodes.Value + " Image"
"Upload $docValue Image"
) )
return false return false
} else if (getCodes.Value == "Aadhar" && docString2.isEmpty()) {
} else if (docValue == "Aadhar" && docString2.isEmpty()) {
Common.showDialogValidation( Common.showDialogValidation(
activity as BajajFdMainActivity, activity as BajajFdMainActivity,
"Upload Aadhar Back Image" "Upload Aadhar Back Image"


+ 92
- 19
app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt View File

@ -7,6 +7,7 @@ import android.text.Editable
import android.text.InputFilter import android.text.InputFilter
import android.text.InputFilter.LengthFilter import android.text.InputFilter.LengthFilter
import android.text.TextWatcher import android.text.TextWatcher
import android.util.DisplayMetrics
import android.util.Log import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
@ -73,6 +74,8 @@ class StepTwoBajajFDFragment : BaseFragment() {
private lateinit var bankListAdapter: BankListAdapter private lateinit var bankListAdapter: BankListAdapter
private lateinit var paymentModeAdapter: PaymentModeAdapter private lateinit var paymentModeAdapter: PaymentModeAdapter
private lateinit var stateObject: DataObject private lateinit var stateObject: DataObject
private val listOfBanks: MutableList<ClientBanklist> = mutableListOf()
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, inflater: LayoutInflater, container: ViewGroup?,
@ -522,7 +525,9 @@ class StepTwoBajajFDFragment : BaseFragment() {
binding.btnAddBank.setOnClickListener { binding.btnAddBank.setOnClickListener {
if (validateBank()) { if (validateBank()) {
/// as
val fullName= binding.edtFirstName.text.toString().plus(" ").plus(binding.edtMiddleName.text.toString()).plus(" ").plus(binding.edtLastName.text.toString())
verifyAccountNo(
binding.edtAccountNumber.text.toString(), binding.edtIFSC.text.toString(), fullName, binding.edtMobileNumber.text.toString(), 1)
} }
} }
@ -539,15 +544,18 @@ class StepTwoBajajFDFragment : BaseFragment() {
binding.addBankDetail.setOnClickListener { binding.addBankDetail.setOnClickListener {
if (binding.llBankDetails.visibility == View.GONE) { if (binding.llBankDetails.visibility == View.GONE) {
binding.llBankDetails.visibility = View.VISIBLE binding.llBankDetails.visibility = View.VISIBLE
binding.addBankDetail.setCompoundDrawablesWithIntrinsicBounds(0,0,R.drawable.ic_minus,0)
} else { } else {
binding.llBankDetails.visibility = View.GONE binding.llBankDetails.visibility = View.GONE
binding.addBankDetail.setCompoundDrawablesWithIntrinsicBounds(0,0,R.drawable.ic_add_icon,0)
} }
} }
titleApi() titleApi()
setUpRecyclerView()
setUpRecyclerView(
(activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.ClientBanklist,
(activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_ACCNO1)
binding.tvPersonalDetails.setOnClickListener { binding.tvPersonalDetails.setOnClickListener {
if (binding.llPersonalDetail.visibility == View.VISIBLE) { if (binding.llPersonalDetail.visibility == View.VISIBLE) {
@ -763,9 +771,8 @@ class StepTwoBajajFDFragment : BaseFragment() {
} }
} }
private fun ifscCodeCheckApi(ifsc: String) { private fun ifscCodeCheckApi(ifsc: String) {
if (ifsc.length >8) {
if (ifsc.length ==11) {
stepTwoBajajFDViewModel.ifscCodeApi(ifsc, activity as BajajFdMainActivity) stepTwoBajajFDViewModel.ifscCodeApi(ifsc, activity as BajajFdMainActivity)
stepTwoBajajFDViewModel.getIfscCodeCheckMutableData.observe(viewLifecycleOwner) { response -> stepTwoBajajFDViewModel.getIfscCodeCheckMutableData.observe(viewLifecycleOwner) { response ->
when (response) { when (response) {
@ -884,6 +891,74 @@ class StepTwoBajajFDFragment : BaseFragment() {
} }
private fun verifyAccountNo(bankAccount :String,Ifsc :String,name:String,phoneNumber:String,bankNo:Int) {
val bankValidationApiRequest = BankValidationApiRequest()
bankValidationApiRequest.BankAccountNo=bankAccount
bankValidationApiRequest.IFSC=Ifsc
bankValidationApiRequest.Name=name
bankValidationApiRequest.PhoneNo=phoneNumber
bankValidationApiRequest.RoleId=5
bankValidationApiRequest.BankNo=bankNo
stepTwoBajajFDViewModel.bankValidationApi(bankValidationApiRequest, token, activity as BajajFdMainActivity)
stepTwoBajajFDViewModel.bankValidationApiMutableData.observe(viewLifecycleOwner) { response ->
when (response) {
is Resource.Success -> {
val getBankValidationApiResponse =
Gson().fromJson(
response.data?.toString(),
BankValidationApiResponse::class.java
)
getBankValidationApiResponse.response.status_code.let { code ->
if (binding.tvAcVerify.visibility == View.GONE) {
binding.tvAcVerify.visibility = View.VISIBLE
}
when (code) {
200 -> {
if(getBankValidationApiResponse.Message=="Account verified") {
val clientBankList =ClientBanklist()
clientBankList.AccountNumber=bankAccount
clientBankList.AccountType="sb"
clientBankList.BankName=binding.edtBankName.text.toString()
clientBankList.BranchName=binding.edtBankBranch.text.toString()
clientBankList.IFSCCode=Ifsc
clientBankList.IsValBank=1
(activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.ClientBanklist?.let {
listOfBanks.addAll(
it
)
}
listOfBanks.add(clientBankList)
setUpRecyclerView(listOfBanks , clientBankList.AccountNumber.toString())
}
else {
Common.showDialogValidation(activity as BajajFdMainActivity, getBankValidationApiResponse.Message)
}
}
else -> {
Common.showDialogValidation(activity as BajajFdMainActivity, getBankValidationApiResponse.Message)
}
}
}
}
is Resource.Error -> {
response.message?.let { message ->
Common.showDialogValidation(activity as BajajFdMainActivity, message)
}
}
is Resource.Loading -> {
}
is Resource.DataError -> {
}
}
}
}
private fun validateBank(): Boolean { private fun validateBank(): Boolean {
return if (binding.edtIFSC.text.toString().isEmpty()) { // EditText return if (binding.edtIFSC.text.toString().isEmpty()) { // EditText
commonErrorAutoCompleteMethod( commonErrorAutoCompleteMethod(
@ -920,19 +995,19 @@ class StepTwoBajajFDFragment : BaseFragment() {
} }
} }
private fun setUpRecyclerView() {
if ((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.ClientBanklist?.isNotEmpty()!!) {
binding.rvClientBankList.layoutManager =
LinearLayoutManager(activity as BajajFdMainActivity)
bankListAdapter = BankListAdapter(
(activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.ClientBanklist,
(activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_ACCNO1
)
binding.rvClientBankList.adapter = bankListAdapter
}
private fun setUpRecyclerView( bankList: List<ClientBanklist>?, selectedAccount: String? = null) {
val displayMetrics = DisplayMetrics()
requireActivity().windowManager.defaultDisplay.getMetrics(displayMetrics)
val width = displayMetrics.widthPixels.toDouble()
binding.rvClientBankList.layoutManager = LinearLayoutManager(
mActivity,
LinearLayoutManager.HORIZONTAL,
false
)
bankListAdapter = BankListAdapter(bankList, selectedAccount,width)
binding.rvClientBankList.adapter = bankListAdapter
} }
private fun datePicker(edtDOB: TextInputEditText) { private fun datePicker(edtDOB: TextInputEditText) {
val year = cal.get(Calendar.YEAR) val year = cal.get(Calendar.YEAR)
val month = cal.get(Calendar.MONTH) val month = cal.get(Calendar.MONTH)
@ -942,7 +1017,6 @@ class StepTwoBajajFDFragment : BaseFragment() {
if (monthOfYear.toString().length == 1) { if (monthOfYear.toString().length == 1) {
"0".plus(monthOfYear) "0".plus(monthOfYear)
} }
// edtDOB.setText(getDate(dayOfMonth.toString() + "-" + (monthOfYear + 1) + "-" + years))
edtDOB.setText( edtDOB.setText(
years.toString().plus("-").plus(monthOfYear + 1).plus("-") years.toString().plus("-").plus(monthOfYear + 1).plus("-")
.plus(dayOfMonth.toString()) .plus(dayOfMonth.toString())
@ -1162,7 +1236,6 @@ class StepTwoBajajFDFragment : BaseFragment() {
binding.rvPaymentMode.adapter = paymentModeAdapter binding.rvPaymentMode.adapter = paymentModeAdapter
} }
private fun genderApi() { private fun genderApi() {
val getCodeRequest = GetCodeRequest() val getCodeRequest = GetCodeRequest()
getCodeRequest.ProductName = getString(R.string.bajajFD) getCodeRequest.ProductName = getString(R.string.bajajFD)


+ 22
- 0
app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt View File

@ -8,6 +8,7 @@ import android.graphics.drawable.GradientDrawable
import android.net.ConnectivityManager import android.net.ConnectivityManager
import android.net.NetworkCapabilities import android.net.NetworkCapabilities
import android.os.Build import android.os.Build
import android.os.Environment
import android.provider.ContactsContract import android.provider.ContactsContract
import android.text.format.DateFormat import android.text.format.DateFormat
import android.util.Patterns import android.util.Patterns
@ -18,6 +19,7 @@ import com.google.gson.JsonObject
import com.nivesh.production.bajajfd.R import com.nivesh.production.bajajfd.R
import kotlinx.coroutines.CoroutineExceptionHandler import kotlinx.coroutines.CoroutineExceptionHandler
import retrofit2.HttpException import retrofit2.HttpException
import java.io.File
import java.io.IOException import java.io.IOException
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.* import java.util.*
@ -233,5 +235,25 @@ class Common {
minAdultAge.add(Calendar.YEAR, -18) minAdultAge.add(Calendar.YEAR, -18)
return minAdultAge.before(userAge) return minAdultAge.before(userAge)
} }
/* this function is used for file size in readable formate(End)*/
fun getFileSizeInMB(length: Long): Double {
// Get length of file in bytes
val fileSizeInBytes = length.toDouble()
// Convert the bytes to Kilobytes (1 KB = 1024 Bytes)
val fileSizeInKB = fileSizeInBytes / 1024
// Convert the KB to MegaBytes (1 MB = 1024 KBytes)
return fileSizeInKB / 1024
}
fun getFileExtension(name: String): String {
val index = name.lastIndexOf('.')
return if (index > 0) {
name.substring(index + 1)
} else {
""
}
}
} }
} }

+ 15
- 0
app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepTwoBajajFDViewModel.kt View File

@ -169,4 +169,19 @@ class StepTwoBajajFDViewModel(private val mainRepository: MainRepository) : View
} }
} }
val bankValidationApiMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun bankValidationApi(bankValidationApiRequest : BankValidationApiRequest,token:String,activity : Activity) = viewModelScope.launch(
Common.handleError(activity)
) {
if (Common.isNetworkAvailable(activity)) {
bankValidationApiMutableData.postValue(Resource.Loading())
val response = mainRepository.bankValidationApiRequest(bankValidationApiRequest,token)
bankValidationApiMutableData.postValue(handleResponse(response))
}
}
} }

+ 5
- 0
app/src/main/res/drawable/ic_minus.xml View File

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#6D6B6B"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M7,11v2h10v-2L7,11zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8z"/>
</vector>

+ 25
- 3
app/src/main/res/layout/fragment_bajajfd_step_two.xml View File

@ -847,7 +847,11 @@
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvClientBankList" android:id="@+id/rvClientBankList"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" />
android:layout_height="match_parent"
android:orientation="horizontal"
/>
<TextView <TextView
android:id="@+id/addBankDetail" android:id="@+id/addBankDetail"
@ -895,18 +899,22 @@
android:orientation="horizontal"> android:orientation="horizontal">
<RadioButton <RadioButton
android:id="@+id/savingBank"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:buttonTint="@color/black" android:buttonTint="@color/black"
android:checked="true" android:checked="true"
android:text="@string/savingsAccount" />
android:text="@string/savingsAccount"
/>
<RadioButton <RadioButton
android:id="@+id/currentBank"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/margin_50" android:layout_marginStart="@dimen/margin_50"
android:buttonTint="@color/black" android:buttonTint="@color/black"
android:text="@string/currentAccount" />
android:text="@string/currentAccount"
/>
</RadioGroup> </RadioGroup>
@ -944,10 +952,24 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="@dimen/margin_15" android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15" android:paddingBottom="@dimen/margin_15"
android:inputType="number"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
<TextView
android:id="@+id/tvAcVerify"
style="@style/regularStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginEnd="@dimen/margin_15"
android:textColor="@color/greyColor2"
android:textSize="@dimen/text_size_10"
android:visibility="gone" />
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
android:id="@+id/tlBankName" android:id="@+id/tlBankName"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense" style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"


Loading…
Cancel
Save

Powered by TurnKey Linux.