From 0e2035ca57b7aba9bb85abf641807c1f1ef802a1 Mon Sep 17 00:00:00 2001 From: pankaj Date: Thu, 5 Jan 2023 20:35:55 +0530 Subject: [PATCH] bank detail add --- .../bajajfd/adapter/BankListAdapter.kt | 63 +++--- .../bajajfd/model/BankValidationApiRequest.kt | 10 +- .../bajajfd/model/ClientBanklist.kt | 14 +- .../ui/fragment/StepThreeBajajFDFragment.kt | 2 + .../ui/fragment/StepTwoBajajFDFragment.kt | 199 ++++++++++++++++-- .../viewModel/StepTwoBajajFDViewModel.kt | 15 ++ app/src/main/res/drawable/ic_minus.xml | 5 + .../res/layout/fragment_bajajfd_step_two.xml | 31 ++- 8 files changed, 284 insertions(+), 55 deletions(-) create mode 100644 app/src/main/res/drawable/ic_minus.xml diff --git a/app/src/main/java/com/nivesh/production/bajajfd/adapter/BankListAdapter.kt b/app/src/main/java/com/nivesh/production/bajajfd/adapter/BankListAdapter.kt index 2e5f4be..4f66308 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/adapter/BankListAdapter.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/adapter/BankListAdapter.kt @@ -7,18 +7,21 @@ import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.nivesh.production.bajajfd.R -import com.nivesh.production.bajajfd.model.BankList import com.nivesh.production.bajajfd.model.ClientBanklist class BankListAdapter( private val bankList: List?, - private val selectedAccount: String? = null + private val selectedAccount: String? = null, + private val width:Double? ) : RecyclerView.Adapter() { inner class BankListViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val bankSelector: ImageView = itemView.findViewById(R.id.bankSelector) val tvBankName: TextView = itemView.findViewById(R.id.tvBankName) val tvBankAccountNumber: TextView = itemView.findViewById(R.id.tvBankAccountNumber) val tvBankIFSC: TextView = itemView.findViewById(R.id.tvBankIFSC) + + + } private var checkedPosition: Int = -2 @@ -27,13 +30,23 @@ class BankListAdapter( parent: ViewGroup, viewType: Int ): 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) { @@ -44,30 +57,32 @@ class BankListAdapter( holder.tvBankIFSC.text = bankList.IFSCCode 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) checkedPosition = holder.adapterPosition - } else if (checkedPosition == -1) { + + } + else if (checkedPosition == -1) { 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) - } 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 } } + + } } } diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/BankValidationApiRequest.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/BankValidationApiRequest.kt index 10fca16..0b6ae56 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/model/BankValidationApiRequest.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/BankValidationApiRequest.kt @@ -2,9 +2,9 @@ package com.nivesh.production.bajajfd.model data class BankValidationApiRequest( 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 ) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/ClientBanklist.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ClientBanklist.kt index 52e87e8..04a1ed1 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/model/ClientBanklist.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ClientBanklist.kt @@ -1,11 +1,11 @@ package com.nivesh.production.bajajfd.model 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 ) \ 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 7260ac6..3431105 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 @@ -535,4 +535,6 @@ class StepThreeBajajFDFragment : BaseFragment() { fun displayReceivedData(createFDApplicationResponse: CreateFDApplicationResponse) { uniqueId = createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId } + + } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt index 699f0ac..14e56cc 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt @@ -7,6 +7,7 @@ import android.text.Editable import android.text.InputFilter import android.text.InputFilter.LengthFilter import android.text.TextWatcher +import android.util.DisplayMetrics import android.util.Log import android.view.LayoutInflater import android.view.View @@ -50,14 +51,11 @@ import java.util.* class StepTwoBajajFDFragment : BaseFragment() { - private var _binding: FragmentBajajfdStepTwoBinding? = null private val binding get() = _binding!! - private lateinit var rbBank: RadioButton private lateinit var rbPaymentMode: RadioButton private var cal = Calendar.getInstance() - private lateinit var listOfTitle: List private lateinit var listOfGender: List private lateinit var listOfAnnualIncome: List @@ -69,10 +67,13 @@ class StepTwoBajajFDFragment : BaseFragment() { private lateinit var listOfCities: List private lateinit var listOfIFSC: MutableList + private lateinit var stepTwoBajajFDViewModel: StepTwoBajajFDViewModel private lateinit var bankListAdapter: BankListAdapter private lateinit var paymentModeAdapter: PaymentModeAdapter private lateinit var stateObject: DataObject + private val listOfBanks: MutableList = mutableListOf() + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -523,6 +524,31 @@ class StepTwoBajajFDFragment : BaseFragment() { binding.btnAddBank.setOnClickListener { if (validateBank()) { /// as + + val selectedOption: Int = binding.rgBank!!.checkedRadioButtonId + + 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 + + ) + + + + + + + + + + // binding.radio.findViewById(selectedOption) + + + } } @@ -532,6 +558,8 @@ class StepTwoBajajFDFragment : BaseFragment() { if ((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.ClientBanklist?.isEmpty()!!) { binding.llBankDetails.visibility = View.VISIBLE + + } else { binding.llBankDetails.visibility = View.GONE } @@ -539,15 +567,25 @@ class StepTwoBajajFDFragment : BaseFragment() { binding.addBankDetail.setOnClickListener { if (binding.llBankDetails.visibility == View.GONE) { binding.llBankDetails.visibility = View.VISIBLE + binding.addBankDetail.setCompoundDrawablesWithIntrinsicBounds(0,0,R.drawable.ic_minus,0) + } else { binding.llBankDetails.visibility = View.GONE + binding.addBankDetail.setCompoundDrawablesWithIntrinsicBounds(0,0,R.drawable.ic_add_icon,0) + + + } } titleApi() +// setUpRecyclerView() + - setUpRecyclerView() + setUpRecyclerView( + (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.ClientBanklist, + (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_ACCNO1) binding.tvPersonalDetails.setOnClickListener { if (binding.llPersonalDetail.visibility == View.VISIBLE) { @@ -566,11 +604,12 @@ class StepTwoBajajFDFragment : BaseFragment() { binding.tvBankDetails.setOnClickListener { if (binding.llBankDetails.visibility == View.VISIBLE) { binding.llBankDetails.visibility = View.GONE + } else { binding.llBankDetails.visibility = View.VISIBLE + } } - binding.btnNext.setOnClickListener { if (validation()) { // Applicant Details @@ -711,11 +750,14 @@ class StepTwoBajajFDFragment : BaseFragment() { createFDApi((activity as BajajFdMainActivity).createFDRequest) } } - binding.btnBack.setOnClickListener { (activity as BajajFdMainActivity).binding.viewPager.currentItem = 0 } + + + + } private fun createFDApi(data: CreateFDRequest) { @@ -765,7 +807,7 @@ class StepTwoBajajFDFragment : BaseFragment() { private fun ifscCodeCheckApi(ifsc: String) { - if (ifsc.length >8) { + if (ifsc.length ==11) { stepTwoBajajFDViewModel.ifscCodeApi(ifsc, activity as BajajFdMainActivity) stepTwoBajajFDViewModel.getifscCodeCheckMutableData.observe(viewLifecycleOwner) { response -> when (response) { @@ -884,6 +926,100 @@ 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 { return if (binding.edtIFSC.text.toString().isEmpty()) { // EditText commonErrorAutoCompleteMethod( @@ -920,19 +1056,35 @@ 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 + private fun setUpRecyclerView( bankList: List?, + selectedAccount: String? = null) { + + + // This code is used to get the screen dimensions of the user's device + val displayMetrics = DisplayMetrics() + requireActivity().windowManager.defaultDisplay.getMetrics(displayMetrics) + val width = displayMetrics.widthPixels.toDouble() + val height = displayMetrics.heightPixels + + + binding.rvClientBankList.layoutManager = LinearLayoutManager( + mActivity, + LinearLayoutManager.HORIZONTAL, + false + ) + + + bankListAdapter = BankListAdapter( + bankList, + selectedAccount,width ) binding.rvClientBankList.adapter = bankListAdapter - } } + + + private fun datePicker(edtDOB: TextInputEditText) { val year = cal.get(Calendar.YEAR) val month = cal.get(Calendar.MONTH) @@ -1893,6 +2045,23 @@ class StepTwoBajajFDFragment : BaseFragment() { super.onDestroyView() _binding = null } + + +// private fun showHideBankDetail() { +// if (show_bank_details.getVisibility() == View.GONE) { +// show_bank_details.setVisibility(View.VISIBLE) +// addBankDetail.setCompoundDrawablesWithIntrinsicBounds( +// 0, +// 0, +// R.drawable.ic_minus_circle, +// 0 +// ) +// } else { +// show_bank_details.setVisibility(View.GONE) +// addBankDetail.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_add_icon, 0) +// } +// } + } diff --git a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepTwoBajajFDViewModel.kt b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepTwoBajajFDViewModel.kt index 7d5c39e..c6cb96a 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepTwoBajajFDViewModel.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepTwoBajajFDViewModel.kt @@ -170,4 +170,19 @@ class StepTwoBajajFDViewModel(private val mainRepository: MainRepository) : View } } + + + + val bankValidationApiMutableData: MutableLiveData> = 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)) + } + } + } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_minus.xml b/app/src/main/res/drawable/ic_minus.xml new file mode 100644 index 0000000..f465978 --- /dev/null +++ b/app/src/main/res/drawable/ic_minus.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/fragment_bajajfd_step_two.xml b/app/src/main/res/layout/fragment_bajajfd_step_two.xml index d8a03ba..bb1be44 100644 --- a/app/src/main/res/layout/fragment_bajajfd_step_two.xml +++ b/app/src/main/res/layout/fragment_bajajfd_step_two.xml @@ -1,5 +1,7 @@ - + android:layout_height="match_parent" + android:orientation="horizontal" + + + /> + android:text="@string/savingsAccount" + /> + android:text="@string/currentAccount" + /> @@ -949,6 +959,19 @@ + + + +