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..45a053f 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 @@ -12,7 +12,8 @@ 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) @@ -27,13 +28,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,28 +55,28 @@ 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/StepTwoBajajFDFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt index 49d9df2..7d805e0 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 @@ -73,6 +74,8 @@ class StepTwoBajajFDFragment : BaseFragment() { 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?, @@ -522,7 +525,9 @@ class StepTwoBajajFDFragment : BaseFragment() { binding.btnAddBank.setOnClickListener { 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 { 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( + (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.ClientBanklist, + (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_ACCNO1) binding.tvPersonalDetails.setOnClickListener { if (binding.llPersonalDetail.visibility == View.VISIBLE) { @@ -763,9 +771,8 @@ 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 +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 { return if (binding.edtIFSC.text.toString().isEmpty()) { // EditText 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?, 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) { val year = cal.get(Calendar.YEAR) val month = cal.get(Calendar.MONTH) @@ -942,7 +1017,6 @@ class StepTwoBajajFDFragment : BaseFragment() { if (monthOfYear.toString().length == 1) { "0".plus(monthOfYear) } - // edtDOB.setText(getDate(dayOfMonth.toString() + "-" + (monthOfYear + 1) + "-" + years)) edtDOB.setText( years.toString().plus("-").plus(monthOfYear + 1).plus("-") .plus(dayOfMonth.toString()) @@ -1162,7 +1236,6 @@ class StepTwoBajajFDFragment : BaseFragment() { binding.rvPaymentMode.adapter = paymentModeAdapter } - private fun genderApi() { val getCodeRequest = GetCodeRequest() getCodeRequest.ProductName = getString(R.string.bajajFD) 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 9e724d0..26f8e18 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 @@ -169,4 +169,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 62005a5..89496dd 100644 --- a/app/src/main/res/layout/fragment_bajajfd_step_two.xml +++ b/app/src/main/res/layout/fragment_bajajfd_step_two.xml @@ -847,7 +847,11 @@ + android:layout_height="match_parent" + android:orientation="horizontal" + + + /> + android:text="@string/savingsAccount" + /> + android:text="@string/currentAccount" + /> @@ -944,10 +952,24 @@ android:layout_height="wrap_content" android:paddingTop="@dimen/margin_15" android:paddingBottom="@dimen/margin_15" + android:inputType="number" android:textSize="@dimen/text_size_14" /> + + + +