diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 23b943e..c5df2bd 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -19,7 +19,8 @@ + android:windowSoftInputMode="adjustPan" + > 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 new file mode 100644 index 0000000..2e5f4be --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/adapter/BankListAdapter.kt @@ -0,0 +1,92 @@ +package com.nivesh.production.bajajfd.adapter + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +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 +) : 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 + + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): BankListViewHolder { + return BankListViewHolder( + LayoutInflater.from(parent.context).inflate( + R.layout.item_bank_list_preview, + parent, + false + ) + ) + } + + override fun onBindViewHolder(holder: BankListViewHolder, position: Int) { + val bankList = bankList?.get(position) + if (bankList !=null) { + holder.itemView.apply { + holder.tvBankName.text = bankList.BankName + holder.tvBankIFSC.text = bankList.IFSCCode + holder.tvBankAccountNumber.text = bankList.AccountNumber + + if (selectedAccount == bankList.AccountNumber && checkedPosition == -2 + ) { + holder.bankSelector.setBackgroundResource(R.drawable.ic_select_green) + checkedPosition = holder.adapterPosition + } else if (checkedPosition == -1) { + holder.bankSelector.setBackgroundResource(R.drawable.ic_select_outline) + } 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 + + } + } + } + } + } + } + + override fun getItemCount(): Int { + return bankList?.size!! + } + + private var onItemClickListener: ((ClientBanklist) -> Unit)? = null + + fun setOnItemClickListener(listener: (ClientBanklist) -> Unit) { + onItemClickListener = listener + } + + + fun getSelected(): ClientBanklist? { + return if (checkedPosition != -1) { + bankList?.get(checkedPosition) + } else null + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/adapter/RecommendedBankListAdapter.kt b/app/src/main/java/com/nivesh/production/bajajfd/adapter/RecommendedBankListAdapter.kt index ece5d80..4b12412 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/adapter/RecommendedBankListAdapter.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/adapter/RecommendedBankListAdapter.kt @@ -1,6 +1,5 @@ package com.nivesh.production.bajajfd.adapter -import android.app.Activity import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -10,27 +9,26 @@ import com.nivesh.production.bajajfd.R import com.nivesh.production.bajajfd.model.Bank class RecommendedBankListAdapter( - private val bankList: List, private val activity: Activity + private val bankList: List ) : RecyclerView.Adapter() { class MyViewHolder(view: View) : RecyclerView.ViewHolder(view) { - val tvText: TextView + val txtYear: TextView init { - tvText = view.findViewById(R.id.tvText) - + txtYear = view.findViewById(R.id.txtYear) } } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { val itemView: View = LayoutInflater.from(parent.context) - .inflate(R.layout.row_dropdown, parent, false) + .inflate(R.layout.row_bank_list, parent, false) return MyViewHolder(itemView) } override fun onBindViewHolder(holder: MyViewHolder, position: Int) { val bank: Bank = bankList[position] - holder.tvText.setText(bank.BankName) + holder.txtYear.text = bank.BankName } diff --git a/app/src/main/java/com/nivesh/production/bajajfd/interfaces/ApiInterface.kt b/app/src/main/java/com/nivesh/production/bajajfd/interfaces/ApiInterface.kt index 5af4e90..9fe2b23 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/interfaces/ApiInterface.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/interfaces/ApiInterface.kt @@ -145,6 +145,12 @@ interface ApiInterface { @Header("token") token: String ): Response - @GET("WebApi_Bajaj/api/GetCity") + @GET("WebAPI_Bajaj/GetFDBankList?FDProvider=Bajaj") suspend fun bankListApi(@Header("token") token: String): Response + + @GET("WebApi/api/GetIFSC_Autofill?prefix={prefix}") + suspend fun getIFSCApi(@Path("prefix") ifsc : String): Response + + @GET("WebApi/api/GetBankDetailsFromIFSC?") + suspend fun getIFSCDetailsApi(@Query("ifsc") ifsc : String,@Header("token") token: String): Response } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/BankList.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/BankList.kt new file mode 100644 index 0000000..ea6bfe9 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/BankList.kt @@ -0,0 +1,15 @@ +package com.nivesh.production.bajajfd.model + +import java.io.Serializable + +data class BankList( + val BankName: String?, + val IFSCCode: String?, + val AccountNumber: String?, + val BranchName: String?, + val DefaultBankFlag: String?, + val IsValBank: String?, + val AccountType: String? +): Serializable + + 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 0412fb4..52e87e8 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 + val AccountNumber: String?, + val AccountType: String?, + val BankName: String?, + val BranchName: String?, + val DefaultBankFlag: String?, + val IFSCCode: String?, + val IsValBank: Int? = 0 ) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/GetCodes.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/GetCodes.kt index 55a39c7..a93541e 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/model/GetCodes.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/GetCodes.kt @@ -7,4 +7,7 @@ data class GetCodes( override fun toString(): String { return Value } + + + } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/GetIFSCCodeListResponse.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/GetIFSCCodeListResponse.kt new file mode 100644 index 0000000..7e31899 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/GetIFSCCodeListResponse.kt @@ -0,0 +1,6 @@ +package com.nivesh.production.bajajfd.model + +data class GetIFSCCodeListResponse( + val IFSCCodes: MutableList, + val Response: ResponseXXXXXXXXXX +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/GetIFSCCodeResponse.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/GetIFSCCodeResponse.kt new file mode 100644 index 0000000..e648098 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/GetIFSCCodeResponse.kt @@ -0,0 +1,10 @@ +package com.nivesh.production.bajajfd.model + +data class GetIFSCCodeResponse( + val ADDRESS: String, + val BANK: String, + val BRANCH: String, + val IFSC: String, + val MICR: String, + val Response: ResponseXXXXXXXXX +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXX.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXX.kt new file mode 100644 index 0000000..67165a6 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXX.kt @@ -0,0 +1,7 @@ +package com.nivesh.production.bajajfd.model + +data class ResponseXXXXXXXXX( + val message: Any, + val status: String, + val status_code: Int +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXX.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXX.kt new file mode 100644 index 0000000..092b2f9 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXX.kt @@ -0,0 +1,7 @@ +package com.nivesh.production.bajajfd.model + +data class ResponseXXXXXXXXXX( + val message: String, + val status: String, + val status_code: Int +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt b/app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt index cb8ed28..cdcad03 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt @@ -76,4 +76,10 @@ class MainRepository constructor(private val apiInterface: ApiInterface) { suspend fun bankListCheck(token: String) = apiInterface.bankListApi(token) + + suspend fun ifscCodeCheck(str: String) = + apiInterface.getIFSCApi(str) + + suspend fun ifscCodeDetailsCheck(str: String, token: String) = + apiInterface.getIFSCDetailsApi(str, token) } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepOneBajajFDFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepOneBajajFDFragment.kt index 7387d34..592d33d 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepOneBajajFDFragment.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepOneBajajFDFragment.kt @@ -160,7 +160,7 @@ class StepOneBajajFDFragment : Fragment() { (activity as BajajFdMainActivity).fdInvestmentDetails.CustomerType = "" (activity as BajajFdMainActivity).fdInvestmentDetails.CKYCNumber = "" - (activity as BajajFdMainActivity).createFDApplicantRequest.FDInvestmentDetails + (activity as BajajFdMainActivity).createFDApplicantRequest.FDInvestmentDetails = (activity as BajajFdMainActivity).fdInvestmentDetails bajajFDInterface.stepOneApi("stepOneResponse") } } 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 16618da..c58fdbb 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 @@ -1,5 +1,6 @@ package com.nivesh.production.bajajfd.ui.fragment +import android.annotation.SuppressLint import android.app.DatePickerDialog import android.app.Dialog import android.os.Bundle @@ -11,6 +12,7 @@ import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.view.WindowManager import android.widget.ArrayAdapter import android.widget.RadioButton import android.widget.TextView @@ -21,12 +23,14 @@ import androidx.recyclerview.widget.RecyclerView import com.google.android.material.textfield.TextInputEditText import com.google.gson.Gson import com.nivesh.production.bajajfd.R +import com.nivesh.production.bajajfd.adapter.BankListAdapter import com.nivesh.production.bajajfd.adapter.RecommendedBankListAdapter import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepTwoBinding import com.nivesh.production.bajajfd.interfaces.BajajFDInterface import com.nivesh.production.bajajfd.model.* import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity import com.nivesh.production.bajajfd.util.Common +import com.nivesh.production.bajajfd.util.Common.Companion.commonErrorAutoCompleteMethod import com.nivesh.production.bajajfd.util.Common.Companion.commonErrorMethod import com.nivesh.production.bajajfd.util.Common.Companion.commonSpinnerErrorMethod import com.nivesh.production.bajajfd.util.Common.Companion.getDate @@ -48,7 +52,7 @@ class StepTwoBajajFDFragment : Fragment() { private lateinit var bajajFDInterface: BajajFDInterface private lateinit var rbBank: RadioButton - private lateinit var rbPaymentMode: RadioButton + private var rbPaymentMode: RadioButton? = null private var cal = Calendar.getInstance() private lateinit var listOfTitle: List @@ -60,7 +64,10 @@ class StepTwoBajajFDFragment : Fragment() { private lateinit var listOfStates: List private lateinit var listOfCities: List + private lateinit var listOfIFSC: MutableList + private lateinit var stepTwoBajajFDViewModel: StepTwoBajajFDViewModel + private lateinit var bankListAdapter: BankListAdapter companion object { fun getInstance(fdInterface: BajajFDInterface): StepTwoBajajFDFragment { @@ -90,6 +97,8 @@ class StepTwoBajajFDFragment : Fragment() { listOfMaritalStatus = ArrayList() listOfOccupation = ArrayList() listOfStates = ArrayList() + listOfIFSC = ArrayList() + // Personal Details binding.edtMobileNumber.filters = arrayOf(LengthFilter(10)) binding.edtPANNumber.filters = arrayOf(LengthFilter(10)) @@ -450,10 +459,9 @@ class StepTwoBajajFDFragment : Fragment() { override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { removeError(binding.tlIFSC) + ifscCodeCheckApi(s.toString()) } }) - // binding.edtIFSC.setText() - binding.edtAccountNumber.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { @@ -491,15 +499,42 @@ class StepTwoBajajFDFragment : Fragment() { } }) + binding.btnAddBank.setOnClickListener { + if (validateBank()) { + /// as + } + } + binding.rgPaymentMode.setOnCheckedChangeListener { group, checkedId -> rbPaymentMode = group.findViewById(checkedId) - Log.e("paymentMode", "-->" + rbPaymentMode.text) + Log.e("paymentMode", "-->" + rbPaymentMode?.text) } - binding.tvEligibleBankOption.setOnClickListener{ + binding.tvEligibleBankOption.setOnClickListener { apiForEligibleBankList() } + if ((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.ClientBanklist?.isEmpty()!!) { + binding.llBankDetails.visibility = View.VISIBLE + } else { + binding.llBankDetails.visibility = View.GONE + } + + + + binding.addBankDetail.setOnClickListener { + if (binding.llBankDetails.visibility == View.GONE) { + binding.llBankDetails.visibility = View.VISIBLE + } else { + binding.llBankDetails.visibility = View.GONE + } + } + + + titleApi() + + setUpRecyclerView() + binding.tvPersonalDetails.setOnClickListener { if (binding.llPersonalDetail.visibility == View.VISIBLE) { binding.llPersonalDetail.visibility = View.GONE @@ -522,7 +557,6 @@ class StepTwoBajajFDFragment : Fragment() { } } - titleApi() binding.btnNext.setOnClickListener { if (validation()) { // Applicant Details @@ -563,7 +597,8 @@ class StepTwoBajajFDFragment : Fragment() { (activity as BajajFdMainActivity).applicantDetails.ApplicantCountry = "India" (activity as BajajFdMainActivity).applicantDetails.ApplicantPincode = binding.edtPinCode.text.toString().toInt() - (activity as BajajFdMainActivity).applicantDetails.AnnualIncome = "" + (activity as BajajFdMainActivity).applicantDetails.AnnualIncome = + binding.spIncome.text.toString() // Applicant Relation Details (activity as BajajFdMainActivity).applicantRelationDetails.ApplicantRelation = "" @@ -605,13 +640,22 @@ class StepTwoBajajFDFragment : Fragment() { (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianSalutation = "" (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianName = binding.edtGuardianName.text.toString() - (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianAge = - binding.edtGuardianAge.text.toString().toInt() + if (binding.edtGuardianAge.text.toString().isEmpty()) { + (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianAge = 0 + } else { + (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianAge = + binding.edtGuardianAge.text.toString().toInt() + } (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianCountry = "India" (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianCity = "" (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianState = "" - (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianPincode = - binding.edtGuardianPinCode.text.toString().toInt() + if (binding.edtGuardianPinCode.text.toString().isEmpty()) { + (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianPincode = 0 + }else{ + (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianPincode = + binding.edtGuardianPinCode.text.toString().toInt() + } + (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianAddress1 = binding.edtGuardianAddress.text.toString() (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianAddress2 = "" @@ -619,27 +663,30 @@ class StepTwoBajajFDFragment : Fragment() { binding.spGuardianRelation.text.toString() // Applicant Bank Details - (activity as BajajFdMainActivity).fdBankDetails.AccountType = rbBank.text.toString() + (activity as BajajFdMainActivity).fdBankDetails.AccountType = + bankListAdapter.getSelected()?.AccountType (activity as BajajFdMainActivity).fdBankDetails.BankBranch = - binding.edtBankBranch.text.toString() + bankListAdapter.getSelected()?.BranchName (activity as BajajFdMainActivity).fdBankDetails.IFSCCode = - binding.edtIFSC.text.toString() + bankListAdapter.getSelected()?.IFSCCode (activity as BajajFdMainActivity).fdBankDetails.AccountNumber = - binding.edtAccountNumber.text.toString() + bankListAdapter.getSelected()?.AccountNumber (activity as BajajFdMainActivity).fdBankDetails.BankName = - binding.edtBankName.text.toString() + bankListAdapter.getSelected()?.BankName (activity as BajajFdMainActivity).fdBankDetails.PaymentMode = - rbPaymentMode.text.toString() + rbPaymentMode?.text.toString() - (activity as BajajFdMainActivity).createFDApplicantRequest.ApplicantDetails - (activity as BajajFdMainActivity).createFDApplicantRequest.ApplicantRelationDetails - (activity as BajajFdMainActivity).createFDApplicantRequest.FdBankDetails - (activity as BajajFdMainActivity).createFDApplicantRequest.NomineeDetails - (activity as BajajFdMainActivity).createFDApplicantRequest.NomineeGuardianDetails + (activity as BajajFdMainActivity).createFDApplicantRequest.ApplicantDetails = (activity as BajajFdMainActivity).applicantDetails + (activity as BajajFdMainActivity).createFDApplicantRequest.ApplicantRelationDetails = (activity as BajajFdMainActivity).applicantRelationDetails + (activity as BajajFdMainActivity).createFDApplicantRequest.FdBankDetails = (activity as BajajFdMainActivity).fdBankDetails + (activity as BajajFdMainActivity).createFDApplicantRequest.NomineeDetails = (activity as BajajFdMainActivity).nomineeDetails + (activity as BajajFdMainActivity).createFDApplicantRequest.NomineeGuardianDetails = (activity as BajajFdMainActivity).nomineeGuardianDetails + + (activity as BajajFdMainActivity).createFDRequest.CreateFDApplicationRequest = (activity as BajajFdMainActivity).createFDApplicantRequest Log.e( "CreateFDRequest", - "-->" + Gson().toJson((activity as BajajFdMainActivity).createFDApplicantRequest) + "-->" + Gson().toJson((activity as BajajFdMainActivity).createFDRequest) ) bajajFDInterface.stepTwoApi("stepTwoResponse") } @@ -648,19 +695,164 @@ class StepTwoBajajFDFragment : Fragment() { binding.btnBack.setOnClickListener { (activity as BajajFdMainActivity).binding.viewPager.currentItem = 0 } + return root } + private fun ifscCodeCheckApi(ifsc: String) { + if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { + if (ifsc.length == 11) { + stepTwoBajajFDViewModel.ifscCodeApi(ifsc) + stepTwoBajajFDViewModel.getifscCodeCheckMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + val getIFSCCodeListResponse = + Gson().fromJson( + response.data?.toString(), + GetIFSCCodeListResponse::class.java + ) + getIFSCCodeListResponse.Response.status_code.let { code -> + when (code) { + 200 -> { + if (listOfIFSC.size > 0) { + listOfIFSC.clear() + } + listOfIFSC = getIFSCCodeListResponse.IFSCCodes + if (listOfIFSC.size > 0) { + val adapter = ArrayAdapter( + activity as BajajFdMainActivity, + R.layout.spinner_dropdown, + listOfIFSC + ) + binding.edtIFSC.setAdapter(adapter) + } + binding.edtIFSC.setOnItemClickListener { _, _, position, _ -> + if (listOfIFSC.size > 0) { + binding.edtIFSC.setText(listOfIFSC[position]) + binding.edtIFSC.setSelection(binding.edtIFSC.text.toString().length) + getIFSCDetailsApi(listOfIFSC[position]) + } + } + + } + // 650 -> refreshToken() + else -> { + + } + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Log.e(" ", "An error occurred:$message") + } + } + is Resource.Loading -> { + + } + } + } + } + } + } + + private fun getIFSCDetailsApi(ifscCode: String) { + if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { + stepTwoBajajFDViewModel.ifscCodeDetailsApi(ifscCode, token) + stepTwoBajajFDViewModel.getifscCodeDetailsCheckMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + val getIFSCCodeResponse = + Gson().fromJson( + response.data?.toString(), + GetIFSCCodeResponse::class.java + ) + getIFSCCodeResponse.Response.status_code.let { code -> + when (code) { + 200 -> { + binding.edtBankName.setText(getIFSCCodeResponse.BANK) + binding.edtBankBranch.setText(getIFSCCodeResponse.BRANCH) + } + // 650 -> refreshToken() + else -> { + + } + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Log.e(" ", "An error occurred:$message") + } + } + is Resource.Loading -> { + + } + } + } + } + } + + private fun validateBank(): Boolean { + return if (binding.edtIFSC.text.toString().isEmpty()) { // EditText + commonErrorAutoCompleteMethod( + binding.edtIFSC, + binding.tlIFSC, + getString(R.string.emptyIFSCCode) + ) + } else if (binding.edtIFSC.text.toString().length != 11) { // EditText + commonErrorAutoCompleteMethod( + binding.edtIFSC, + binding.tlIFSC, + getString(R.string.validIFSCCode) + ) + } else if (binding.edtAccountNumber.text.toString().isEmpty()) { // EditText + commonErrorMethod( + binding.edtAccountNumber, + binding.tlAccountNumber, + getString(R.string.emptyAccNo) + ) + } else if (binding.edtBankName.text.toString().isEmpty()) { // EditText + commonErrorMethod( + binding.edtBankName, + binding.tlBankName, + getString(R.string.emptyBankName) + ) + } else if (binding.edtBankBranch.text.toString().isEmpty()) { // EditText + commonErrorMethod( + binding.edtBankBranch, + binding.tlBankBranchName, + getString(R.string.emptyBranchName) + ) + } else { + return true + } + } + + 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 datePicker(edtDOB: TextInputEditText) { val year = cal.get(Calendar.YEAR) val month = cal.get(Calendar.MONTH) val day = cal.get(Calendar.DAY_OF_MONTH) val datePickerDialog = DatePickerDialog( - activity as BajajFdMainActivity, { _, year, monthOfYear, dayOfMonth -> + activity as BajajFdMainActivity, { _, years, monthOfYear, dayOfMonth -> if (monthOfYear.toString().length == 1) { "0".plus(monthOfYear) } - edtDOB.setText(getDate(dayOfMonth.toString() + "-" + (monthOfYear + 1) + "-" + year)) + edtDOB.setText(getDate(dayOfMonth.toString() + "-" + (monthOfYear + 1) + "-" + years)) edtDOB.setSelection(edtDOB.text.toString().length) }, year, month, day ) @@ -730,6 +922,7 @@ class StepTwoBajajFDFragment : Fragment() { } + @SuppressLint("ClickableViewAccessibility") private fun titleApi() { if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { val getCodeRequest = GetCodeRequest() @@ -759,7 +952,7 @@ class StepTwoBajajFDFragment : Fragment() { val titleText = (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.Client_Title val newTitleText = "$titleText." - if (titleText.isNullOrEmpty()) { + if (titleText?.isEmpty()!!) { binding.spTitle.setText( adapter.getItem(0)?.Value, false @@ -1112,7 +1305,7 @@ class StepTwoBajajFDFragment : Fragment() { binding.spState.setAdapter(adapter) val newTitleText = (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_STATE - if (newTitleText.isNullOrEmpty()) { + if (newTitleText?.isEmpty()!!) { binding.spState.setText( adapter.getItem(0)?.State_Name, false @@ -1186,7 +1379,7 @@ class StepTwoBajajFDFragment : Fragment() { val newTitleText = (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CITY - if (newTitleText.isNullOrEmpty()) { + if (newTitleText?.isEmpty()!!) { binding.spCity.setText( adapter.getItem(0)?.city_name, false @@ -1262,17 +1455,23 @@ class StepTwoBajajFDFragment : Fragment() { val dialog = Dialog(activity as BajajFdMainActivity) dialog.setContentView(R.layout.layout_bank_list) dialog.setCancelable(true) + dialog.window!! + .setLayout( + WindowManager.LayoutParams.MATCH_PARENT, + WindowManager.LayoutParams.MATCH_PARENT + ) val rvClientList = dialog.findViewById(R.id.rvBankList) rvClientList.layoutManager = LinearLayoutManager(activity as BajajFdMainActivity) val tvCancel = dialog.findViewById(R.id.tvCancel) + tvCancel.setOnClickListener { + dialog.dismiss() + } if (bankList.isNotEmpty()) { - val bankListAdapter = RecommendedBankListAdapter(bankList, activity as BajajFdMainActivity) + val bankListAdapter = RecommendedBankListAdapter(bankList) rvClientList.adapter = bankListAdapter } - tvCancel.setOnClickListener{ - dialog.dismiss() - } + dialog.show() } // validations @@ -1315,6 +1514,12 @@ class StepTwoBajajFDFragment : Fragment() { binding.tlTitle, getString(R.string.emptyTitle) ) + } else if (binding.spGender.text.toString().isEmpty()) { // Spinner + commonSpinnerErrorMethod( + binding.spGender, + binding.tlGender, + getString(R.string.emptyGender) + ) } else if (binding.edtFirstName.text.toString().isEmpty()) { // EditText commonErrorMethod( binding.edtFirstName, @@ -1351,22 +1556,18 @@ class StepTwoBajajFDFragment : Fragment() { binding.tlLastName, getString(R.string.validLastName) ) - } else if (binding.spGender.text.toString().isEmpty()) { // Spinner - commonSpinnerErrorMethod( - binding.spGender, - binding.tlGender, - getString(R.string.emptyGender) - ) - } else if (binding.edtEmail.text.toString().isEmpty()) { // EditText - commonErrorMethod(binding.edtEmail, binding.tlEmail, getString(R.string.emptyEmail)) - } else if (isValidEmail(binding.edtEmail.text.toString())) { // EditText - commonErrorMethod(binding.edtEmail, binding.tlEmail, getString(R.string.validEmail)) } else if (binding.spOccupation.text.toString().isEmpty()) { // EditText commonSpinnerErrorMethod( binding.spOccupation, binding.tlOccupation, getString(R.string.emptyOccupation) ) + } else if (binding.spIncome.text.toString().isEmpty()) { // EditText + commonSpinnerErrorMethod( + binding.spIncome, + binding.tlIncome, + getString(R.string.emptyIncome) + ) } else if (binding.edtQualification.text.toString().isEmpty()) { // EditText commonErrorMethod( binding.edtQualification, @@ -1379,6 +1580,10 @@ class StepTwoBajajFDFragment : Fragment() { binding.tlMarital, getString(R.string.emptyMaritalStatus) ) + } else if (binding.edtEmail.text.toString().isEmpty()) { // EditText + commonErrorMethod(binding.edtEmail, binding.tlEmail, getString(R.string.emptyEmail)) + } else if (!isValidEmail(binding.edtEmail.text.toString())) { // EditText + commonErrorMethod(binding.edtEmail, binding.tlEmail, getString(R.string.validEmail)) } else if (binding.edtAddressLine1.text.toString().isEmpty()) { // EditText commonErrorMethod( binding.edtAddressLine1, @@ -1417,23 +1622,41 @@ class StepTwoBajajFDFragment : Fragment() { binding.tlPinCode, getString(R.string.validPinCode) ) - } else if (binding.edtIFSC.text.toString().isEmpty()) { // EditText - commonErrorMethod(binding.edtIFSC, binding.tlIFSC, getString(R.string.emptyIFSCCode)) - } else if (binding.edtIFSC.text.toString().length != 11) { // EditText - commonErrorMethod(binding.edtIFSC, binding.tlIFSC, getString(R.string.validIFSCCode)) - } else if (binding.edtAccountNumber.text.toString().isEmpty()) { // EditText + } else if ((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.ClientBanklist?.isEmpty()!! && binding.edtIFSC.text.toString() + .isEmpty() + ) { // EditText + commonErrorAutoCompleteMethod( + binding.edtIFSC, + binding.tlIFSC, + getString(R.string.emptyIFSCCode) + ) + } else if ((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.ClientBanklist?.isEmpty()!! && binding.edtIFSC.text.toString() + .length != 11 + ) { // EditText + commonErrorAutoCompleteMethod( + binding.edtIFSC, + binding.tlIFSC, + getString(R.string.validIFSCCode) + ) + } else if ((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.ClientBanklist?.isEmpty()!! && binding.edtAccountNumber.text.toString() + .isEmpty() + ) { // EditText commonErrorMethod( binding.edtAccountNumber, binding.tlAccountNumber, getString(R.string.emptyAccNo) ) - } else if (binding.edtBankName.text.toString().isEmpty()) { // EditText + } else if ((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.ClientBanklist?.isEmpty()!! && binding.edtBankName.text.toString() + .isEmpty() + ) { // EditText commonErrorMethod( binding.edtBankName, binding.tlBankName, getString(R.string.emptyBankName) ) - } else if (binding.edtBankBranch.text.toString().isEmpty()) { // EditText + } else if ((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.ClientBanklist?.isEmpty()!! && binding.edtBankBranch.text.toString() + .isEmpty() + ) { // EditText commonErrorMethod( binding.edtBankBranch, binding.tlBankBranchName, diff --git a/app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt b/app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt index 1c91da4..ef479b7 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt @@ -154,6 +154,16 @@ class Common { return false } + fun commonErrorAutoCompleteMethod( + inputText: MaterialAutoCompleteTextView, + inputError: TextInputLayout, + strMessage: String + ): Boolean { + inputText.requestFocus() + inputError.error = strMessage + return false + } + fun commonSpinnerErrorMethod( inputText: MaterialAutoCompleteTextView, inputError: TextInputLayout, 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 b0cbf52..4079a46 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 @@ -111,4 +111,19 @@ class StepTwoBajajFDViewModel(private val mainRepository: MainRepository) : View getFDBankListMutableData.postValue(handleRatesResponse(response)) } + val getifscCodeCheckMutableData: MutableLiveData> = MutableLiveData() + fun ifscCodeApi(ifsc : String) = viewModelScope.launch { + getifscCodeCheckMutableData.postValue(Resource.Loading()) + val response = mainRepository.ifscCodeCheck(ifsc) + getifscCodeCheckMutableData.postValue(handleRatesResponse(response)) + } + + val getifscCodeDetailsCheckMutableData: MutableLiveData> = MutableLiveData() + fun ifscCodeDetailsApi(ifsc : String, token: String) = viewModelScope.launch { + getifscCodeDetailsCheckMutableData.postValue(Resource.Loading()) + val response = mainRepository.ifscCodeDetailsCheck(ifsc, token) + getifscCodeDetailsCheckMutableData.postValue(handleRatesResponse(response)) + } + + } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_add_icon.xml b/app/src/main/res/drawable/ic_add_icon.xml new file mode 100644 index 0000000..a6bdf84 --- /dev/null +++ b/app/src/main/res/drawable/ic_add_icon.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_select_green.xml b/app/src/main/res/drawable/ic_select_green.xml new file mode 100644 index 0000000..c3bb144 --- /dev/null +++ b/app/src/main/res/drawable/ic_select_green.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_select_outline.xml b/app/src/main/res/drawable/ic_select_outline.xml new file mode 100644 index 0000000..35bec46 --- /dev/null +++ b/app/src/main/res/drawable/ic_select_outline.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 92b016e..836d2bb 100644 --- a/app/src/main/res/layout/fragment_bajajfd_step_two.xml +++ b/app/src/main/res/layout/fragment_bajajfd_step_two.xml @@ -14,9 +14,9 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="@dimen/margin_80" - android:padding="@dimen/margin_5" android:background="@color/NiveshColorAppBg" android:fillViewport="true" + android:padding="@dimen/margin_5" android:visibility="visible" app:layout_constraintBottom_toTopOf="@+id/btnNext" app:layout_constraintEnd_toEndOf="parent" @@ -72,8 +72,8 @@ style="@style/regularStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="@dimen/margin_10" android:layout_marginStart="@dimen/margin_10" + android:layout_marginTop="@dimen/margin_10" android:layout_marginBottom="@dimen/margin_1" android:text="@string/mandatoryField" android:textColor="@color/greyColor2" @@ -91,8 +91,8 @@ android:paddingStart="@dimen/margin_18" android:paddingEnd="@dimen/margin_15" android:text="@string/personalDetails" - android:textSize="@dimen/text_size_14" android:textColor="@color/black" + android:textSize="@dimen/text_size_14" app:drawableEndCompat="@drawable/svg_down_arrow" /> @@ -134,11 +134,11 @@ android:id="@+id/edtDOB" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingTop="@dimen/margin_15" - android:paddingBottom="@dimen/margin_15" android:drawableEnd="@drawable/svg_cal" - android:inputType="none" android:focusable="false" + android:inputType="none" + android:paddingTop="@dimen/margin_15" + android:paddingBottom="@dimen/margin_15" android:textSize="@dimen/text_size_14" /> @@ -155,35 +155,35 @@ android:id="@+id/edtPANNumber" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingTop="@dimen/margin_15" - android:paddingBottom="@dimen/margin_15" android:inputType="textCapCharacters" android:maxEms="10" + android:paddingTop="@dimen/margin_15" + android:paddingBottom="@dimen/margin_15" android:textSize="@dimen/text_size_14" /> + android:visibility="gone" /> @@ -260,10 +260,10 @@ android:id="@+id/edtMiddleName" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingTop="@dimen/margin_15" - android:paddingBottom="@dimen/margin_15" android:inputType="text" android:maxEms="40" + android:paddingTop="@dimen/margin_15" + android:paddingBottom="@dimen/margin_15" android:textSize="@dimen/text_size_14" /> @@ -282,23 +282,22 @@ android:id="@+id/edtLastName" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingTop="@dimen/margin_15" - android:paddingBottom="@dimen/margin_15" android:inputType="text" android:maxEms="40" + android:paddingTop="@dimen/margin_15" + android:paddingBottom="@dimen/margin_15" android:textSize="@dimen/text_size_14" /> - + android:layout_margin="@dimen/margin_5" + app:hintEnabled="false"> + android:textSize="@dimen/text_size_14" /> @@ -318,8 +317,8 @@ style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu" android:layout_width="match_parent" android:layout_height="wrap_content" - app:hintEnabled="false" - android:layout_margin="@dimen/margin_5"> + android:layout_margin="@dimen/margin_5" + app:hintEnabled="false"> + android:textSize="@dimen/text_size_14" /> @@ -346,10 +345,10 @@ android:id="@+id/edtQualification" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingTop="@dimen/margin_15" - android:paddingBottom="@dimen/margin_15" android:inputType="text" android:maxEms="60" + android:paddingTop="@dimen/margin_15" + android:paddingBottom="@dimen/margin_15" android:textSize="@dimen/text_size_14" /> @@ -358,11 +357,11 @@ android:id="@+id/tlMarital" style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu" android:layout_width="match_parent" - android:layout_height="@dimen/margin_48" - android:layout_marginTop="@dimen/margin_10" - android:layout_marginBottom="@dimen/margin_5" + android:layout_height="wrap_content" android:layout_marginStart="@dimen/margin_5" + android:layout_marginTop="@dimen/margin_10" android:layout_marginEnd="@dimen/margin_5" + android:layout_marginBottom="@dimen/margin_5" app:hintEnabled="false" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -393,9 +392,9 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textEmailAddress" + android:maxEms="50" android:paddingTop="@dimen/margin_15" android:paddingBottom="@dimen/margin_15" - android:maxEms="50" android:textSize="@dimen/text_size_14" /> @@ -412,10 +411,10 @@ android:id="@+id/edtAddressLine1" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingTop="@dimen/margin_15" - android:paddingBottom="@dimen/margin_15" android:inputType="text" android:maxEms="100" + android:paddingTop="@dimen/margin_15" + android:paddingBottom="@dimen/margin_15" android:textSize="@dimen/text_size_14" /> @@ -432,10 +431,10 @@ android:id="@+id/edtAddressLine2" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingTop="@dimen/margin_15" - android:paddingBottom="@dimen/margin_15" android:inputType="text" android:maxEms="100" + android:paddingTop="@dimen/margin_15" + android:paddingBottom="@dimen/margin_15" android:textSize="@dimen/text_size_14" /> @@ -452,10 +451,10 @@ android:id="@+id/edtAddressLine3" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingTop="@dimen/margin_15" - android:paddingBottom="@dimen/margin_15" android:inputType="text" android:maxEms="100" + android:paddingTop="@dimen/margin_15" + android:paddingBottom="@dimen/margin_15" android:textSize="@dimen/text_size_14" /> @@ -478,7 +477,7 @@ android:inputType="none" android:labelFor="@+id/tlState" android:textColorHint="#757575" - android:textSize="@dimen/text_size_14"/> + android:textSize="@dimen/text_size_14" /> @@ -487,8 +486,8 @@ style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu" android:layout_width="match_parent" android:layout_height="wrap_content" - app:hintEnabled="false" - android:layout_margin="@dimen/margin_5"> + android:layout_margin="@dimen/margin_5" + app:hintEnabled="false"> + android:textSize="@dimen/text_size_14" /> @@ -541,7 +540,6 @@ app:drawableEndCompat="@drawable/svg_down_arrow" /> - @@ -608,10 +606,10 @@ android:id="@+id/edtNomineeMiddleName" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingTop="@dimen/margin_15" - android:paddingBottom="@dimen/margin_15" android:inputType="text" android:maxEms="100" + android:paddingTop="@dimen/margin_15" + android:paddingBottom="@dimen/margin_15" android:textSize="@dimen/text_size_14" /> @@ -628,10 +626,10 @@ android:id="@+id/edtNomineeLastName" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingTop="@dimen/margin_15" - android:paddingBottom="@dimen/margin_15" android:inputType="text" android:maxEms="100" + android:paddingTop="@dimen/margin_15" + android:paddingBottom="@dimen/margin_15" android:textSize="@dimen/text_size_14" /> @@ -649,10 +647,10 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:drawableEnd="@drawable/svg_cal" + android:focusable="false" + android:inputType="none" android:paddingTop="@dimen/margin_15" android:paddingBottom="@dimen/margin_15" - android:inputType="none" - android:focusable="false" android:textSize="@dimen/text_size_14" /> @@ -661,11 +659,11 @@ android:id="@+id/tlNomineeRelation" style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu" android:layout_width="match_parent" - android:layout_height="@dimen/margin_48" - android:layout_marginTop="@dimen/margin_10" - android:layout_marginBottom="@dimen/margin_5" + android:layout_height="wrap_content" android:layout_marginStart="@dimen/margin_5" + android:layout_marginTop="@dimen/margin_10" android:layout_marginEnd="@dimen/margin_5" + android:layout_marginBottom="@dimen/margin_5" app:hintEnabled="false" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -704,10 +702,10 @@ android:id="@+id/edtGuardianName" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingTop="@dimen/margin_15" - android:paddingBottom="@dimen/margin_15" android:inputType="text" android:maxEms="60" + android:paddingTop="@dimen/margin_15" + android:paddingBottom="@dimen/margin_15" android:textSize="@dimen/text_size_14" /> @@ -724,10 +722,10 @@ android:id="@+id/edtGuardianAge" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingTop="@dimen/margin_15" - android:paddingBottom="@dimen/margin_15" android:inputType="text" android:maxEms="60" + android:paddingTop="@dimen/margin_15" + android:paddingBottom="@dimen/margin_15" android:textSize="@dimen/text_size_14" /> @@ -736,11 +734,11 @@ android:id="@+id/tlGuardianRelation" style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu" android:layout_width="match_parent" - android:layout_height="@dimen/margin_48" - android:layout_marginTop="@dimen/margin_10" - android:layout_marginBottom="@dimen/margin_5" + android:layout_height="wrap_content" android:layout_marginStart="@dimen/margin_5" + android:layout_marginTop="@dimen/margin_10" android:layout_marginEnd="@dimen/margin_5" + android:layout_marginBottom="@dimen/margin_5" app:hintEnabled="false" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -771,10 +769,10 @@ android:id="@+id/edtGuardianAddress" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingTop="@dimen/margin_15" - android:paddingBottom="@dimen/margin_15" android:inputType="text" android:maxEms="60" + android:paddingTop="@dimen/margin_15" + android:paddingBottom="@dimen/margin_15" android:textSize="@dimen/text_size_14" /> @@ -791,10 +789,10 @@ android:id="@+id/edtGuardianPinCode" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingTop="@dimen/margin_15" - android:paddingBottom="@dimen/margin_15" android:inputType="number" android:maxEms="60" + android:paddingTop="@dimen/margin_15" + android:paddingBottom="@dimen/margin_15" android:textSize="@dimen/text_size_14" /> @@ -815,12 +813,45 @@ android:textSize="@dimen/text_size_14" app:drawableRightCompat="@drawable/svg_down_arrow" /> + + + + + + + + + + + + + + + android:padding="@dimen/margin_10" + android:visibility="gone"> - @@ -888,7 +921,7 @@ android:layout_height="wrap_content" android:paddingTop="@dimen/margin_15" android:paddingBottom="@dimen/margin_15" - android:textSize="@dimen/text_size_14"/> + android:textSize="@dimen/text_size_14" /> @@ -929,23 +962,36 @@ + + + android:paddingEnd="@dimen/margin_15"> @@ -955,13 +1001,12 @@ style="@style/regularStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:gravity="end" android:layout_gravity="end" + android:gravity="end" android:padding="@dimen/margin_3" android:text="@string/eligibleBankOption" android:textColor="@color/blue" - android:textSize="@dimen/text_size_14" - /> + android:textSize="@dimen/text_size_14" /> diff --git a/app/src/main/res/layout/item_bank_list_preview.xml b/app/src/main/res/layout/item_bank_list_preview.xml new file mode 100644 index 0000000..885baf7 --- /dev/null +++ b/app/src/main/res/layout/item_bank_list_preview.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/layout_bank_list.xml b/app/src/main/res/layout/layout_bank_list.xml index 6192f67..8893b1a 100644 --- a/app/src/main/res/layout/layout_bank_list.xml +++ b/app/src/main/res/layout/layout_bank_list.xml @@ -1,43 +1,54 @@ + android:layout_height="match_parent"> + android:textSize="@dimen/text_size_16" + app:layout_constraintBottom_toTopOf="@+id/rvBankList" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" /> + android:textSize="@dimen/text_size_19" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" /> - + + + android:layout_height="match_parent" + android:layout_marginTop="@dimen/margin_60" + android:layout_marginBottom="@dimen/margin_5" + android:scrollbars="none" + app:layout_constraintTop_toBottomOf="@+id/tvSelectClient" /> \ No newline at end of file diff --git a/app/src/main/res/layout/row_bank_list.xml b/app/src/main/res/layout/row_bank_list.xml new file mode 100644 index 0000000..cbcbe21 --- /dev/null +++ b/app/src/main/res/layout/row_bank_list.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml index 455ac7b..06fab1c 100644 --- a/app/src/main/res/values-hi-rIN/strings.xml +++ b/app/src/main/res/values-hi-rIN/strings.xml @@ -4,7 +4,6 @@ App nivesh - Step 1 Step 2 Step 3 @@ -42,8 +41,9 @@ BajajFD InterestPayoutFreq EN - Min, 12 months, Max. 60 months - + Min. 12 months, Max. 60 months + MINAmount + MAXAmount Please enter amount @@ -55,6 +55,7 @@ Please select Interest Payout Please select Investment Tenure + All fields are mandatory other then optional Personal Details @@ -75,12 +76,26 @@ Enter Address Line 1 Enter Address Line 2 Enter Address Line 3 - State City PinCode Verified Not Verified + Salutation + Gender + MaritalStatus + Occupation + NomineeRelationship + Select Income + Select State + Select City + AnnualIncome + Information + X + A/c No: + A/c IFSC : + Add + Nominee Details (Optional) @@ -119,11 +134,14 @@ Mobile number should have at least 10 digits Mobile number should start with 6,7,8 and 9 Please select date of birth + Please enter PAN number Invalid PAN + Please select title Please select gender + Please enter First Name Please enter valid First Name @@ -133,13 +151,17 @@ Please enter Last name Please enter valid Last Name + Please enter email address + Please enter valid email address + Please select occupation + Please select income + Please select Qualification Please select marital status Please select relation Please enter relation name - Please enter email address - Please enter valid email address + Please enter address 1 Please enter address 2 Please enter address 3 @@ -150,14 +172,16 @@ Please enter PinCode Please enter valid PinCode - Please enter valid account number + Please enter account number Please enter IFSC code Please enter valid IFSC code - Please select bank name Please enter branch name + Please select bank name + Please select payment mode + Upload KYC Documents Address Proof Type * @@ -182,6 +206,7 @@ Are you a politically exposed person I am not a citizen, national or tax resident of any country outside of India I undertake to inform company any change in status of my nationality or tax residence. I am making investment from my Indian resident Individual Savings bank account. I/ We confirm that 1/we have read and understood the detailed terms and conditions annexed to this Application including the interest rate and other charges. I have gone through the financials and other statements/particulars representations furnished/made by the company and after careful consideration I am making the deposit with the company at my own risk and volition. I have read and agree to the Terms & conditions + Please accept terms & conditions. @@ -207,22 +232,9 @@ Once you click on PAY, your order will be placed and you will be redirected to payment gateway. Senior Citizen Non Senior Citizen + Add New Account - - MINAmount - MAXAmount OK Cancel - Salutation - Gender - MaritalStatus - Occupation - NomineeRelationship - Select Income - Select State - Select City - AnnualIncome - Information - X \ No newline at end of file diff --git a/app/src/main/res/values-night/strings.xml b/app/src/main/res/values-night/strings.xml new file mode 100644 index 0000000..d495c0f --- /dev/null +++ b/app/src/main/res/values-night/strings.xml @@ -0,0 +1,4 @@ + + + Add New Account + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 47c5b44..d099d57 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -91,6 +91,11 @@ Select City AnnualIncome Information + X + A/c No: + A/c IFSC : + Add + Nominee Details (Optional) @@ -150,6 +155,8 @@ Please enter valid email address Please select occupation + Please select income + Please select Qualification Please select marital status Please select relation @@ -225,9 +232,10 @@ Once you click on PAY, your order will be placed and you will be redirected to payment gateway. Senior Citizen Non Senior Citizen + Add New Account + OK Cancel - X