diff --git a/app/src/main/java/com/nivesh/production/bajajfd/adapter/CustomerListAdapter.kt b/app/src/main/java/com/nivesh/production/bajajfd/adapter/CustomerListAdapter.kt new file mode 100644 index 0000000..ff19bee --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/adapter/CustomerListAdapter.kt @@ -0,0 +1,74 @@ +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.GetCodes + +class CustomerListAdapter( + private val bankList: List? +) : 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) + } + + private var checkedPosition: Int = -2 + + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): BankListViewHolder { + return BankListViewHolder( + LayoutInflater.from(parent.context).inflate( + R.layout.item_customer_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.Value + 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: ((GetCodes) -> Unit)? = null + + fun setOnItemClickListener(listener: (GetCodes) -> Unit) { + onItemClickListener = listener + } + + + fun getSelected(): GetCodes? { + 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/PaymentModeAdapter.kt b/app/src/main/java/com/nivesh/production/bajajfd/adapter/PaymentModeAdapter.kt new file mode 100644 index 0000000..0bada10 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/adapter/PaymentModeAdapter.kt @@ -0,0 +1,88 @@ +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.GetCodes + +class PaymentModeAdapter( + 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) + } + + private var checkedPosition: Int = -2 + + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): BankListViewHolder { + return BankListViewHolder( + LayoutInflater.from(parent.context).inflate( + R.layout.item_payment_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.Value + + if (selectedAccount == bankList.Value && 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: ((GetCodes) -> Unit)? = null + + fun setOnItemClickListener(listener: (GetCodes) -> Unit) { + onItemClickListener = listener + } + + + fun getSelected(): GetCodes? { + 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/interfaces/ApiInterface.kt b/app/src/main/java/com/nivesh/production/bajajfd/interfaces/ApiInterface.kt index 1e7cdd1..f8a0f7c 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 @@ -40,7 +40,7 @@ interface ApiInterface { @POST("WebApi_Bajaj/api/GetFDDetails") suspend fun getFDDetails( - @Body requestBody: RequestBody, + @Body requestBody: GetFDDetailsRequest, @Header("token") token: String ): Response diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/FDDataResponse.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/FDDataResponse.kt new file mode 100644 index 0000000..325e7e6 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/FDDataResponse.kt @@ -0,0 +1,12 @@ +package com.nivesh.production.bajajfd.model + +data class FDDataResponse( + val FDAmount: Double, + val Frequency: String, + val ParameterName: String, + val PaymentUrl: String, + val RateOfInterest: Double, + val Tenure: Int, + val UniqueId: String, + val Value: String +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/GetFDDetailsRequest.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/GetFDDetailsRequest.kt new file mode 100644 index 0000000..7cde245 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/GetFDDetailsRequest.kt @@ -0,0 +1,7 @@ +package com.nivesh.production.bajajfd.model + +data class GetFDDetailsRequest( + var FDProvider: String? = "", + var NiveshClientCode: String? = "", + var UniqueId: String? = "" +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/GetFDDetailsResponse.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/GetFDDetailsResponse.kt new file mode 100644 index 0000000..15f4af7 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/GetFDDetailsResponse.kt @@ -0,0 +1,5 @@ +package com.nivesh.production.bajajfd.model + +data class GetFDDetailsResponse( + val Response: ResponseXXXXXXXXXXXX +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXXX.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXXX.kt new file mode 100644 index 0000000..4bacf38 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXXX.kt @@ -0,0 +1,9 @@ +package com.nivesh.production.bajajfd.model + +data class ResponseXXXXXXXXXXXX( + val Errors: Any, + val FDDataResponse: FDDataResponse, + val Message: String, + val Status: String, + val StatusCode: 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 65beecc..35b059f 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 @@ -32,8 +32,8 @@ class MainRepository constructor(private val apiInterface: ApiInterface) { suspend fun saveFDOtherDataResponse(getRatesRequest: GetRatesRequest, token: String) = apiInterface.getRates(getRatesRequest, token) - suspend fun getFDDetailsResponse(getRatesRequest: GetRatesRequest, token: String) = - apiInterface.getRates(getRatesRequest, token) + suspend fun getFDDetailsResponse(getRatesRequest: GetFDDetailsRequest, token: String) = + apiInterface.getFDDetails(getRatesRequest, token) suspend fun updateFDPaymentStatusResponse(getRatesRequest: GetRatesRequest, token: String) = apiInterface.getRates(getRatesRequest, token) diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt index a915b91..88b6ba0 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt @@ -18,6 +18,7 @@ import com.nivesh.production.bajajfd.ui.fragment.* import com.nivesh.production.bajajfd.ui.providerfactory.* import com.nivesh.production.bajajfd.util.Common import com.nivesh.production.bajajfd.util.Common.Companion.defaultShape +import com.nivesh.production.bajajfd.util.Common.Companion.getDate import com.nivesh.production.bajajfd.util.Common.Companion.selectedShape import com.nivesh.production.bajajfd.util.Common.Companion.showDialogValidation import com.nivesh.production.bajajfd.util.Constants.Companion.token @@ -300,12 +301,12 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { checkFDKYCRequest.Mobile = getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CM_MOBILE checkFDKYCRequest.DOB = - getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_DOB + getDate(getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_DOB!!) checkFDKYCRequest.PAN = getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_PAN checkFDKYCRequest.NiveshClientCode = getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE.toString() - stepOneBajajFDViewModel.checkFDKYC(checkFDKYCRequest, token) + stepOneBajajFDViewModel.checkFDKYC( checkFDKYCRequest, token) stepOneBajajFDViewModel.getFDKYCMutableData.observe(this) { response -> when (response) { is Resource.Success -> { diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFourBajajFDFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFourBajajFDFragment.kt index 923dcab..b6358b6 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFourBajajFDFragment.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFourBajajFDFragment.kt @@ -6,14 +6,13 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment +import androidx.recyclerview.widget.LinearLayoutManager import com.google.gson.Gson import com.nivesh.production.bajajfd.R +import com.nivesh.production.bajajfd.adapter.CustomerListAdapter import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepFourBinding import com.nivesh.production.bajajfd.interfaces.BajajFDInterface -import com.nivesh.production.bajajfd.model.CreateFDApplicationResponse -import com.nivesh.production.bajajfd.model.GetCodeRequest -import com.nivesh.production.bajajfd.model.GetCodeResponse -import com.nivesh.production.bajajfd.model.GetRatesRequest +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.showDialogValidation @@ -26,7 +25,7 @@ class StepFourBajajFDFragment : Fragment() { private lateinit var stepFourBajajFDViewModel: StepFourBajajFDViewModel private var _binding: FragmentBajajfdStepFourBinding? = null private val binding get() = _binding!! - var uniqueId : String? = "" + var uniqueId: String? = "" private lateinit var bajajFDInterface: BajajFDInterface @@ -58,36 +57,18 @@ class StepFourBajajFDFragment : Fragment() { binding.tvInterestPayout.text = "" binding.tvRateOfInterest.text = "" - - binding.swDirectorBajajFinance.setOnCheckedChangeListener { _, _ -> - - } - binding.swPromoterBajajFinance.setOnCheckedChangeListener { _, _ -> - - } - binding.swRelativeDirector.setOnCheckedChangeListener { _, _ -> - - } - binding.swShareholder.setOnCheckedChangeListener { _, _ -> - - } - binding.swPoliticallyExposed.setOnCheckedChangeListener { _, _ -> - - } - binding.swCitizen.setOnCheckedChangeListener { _, _ -> - - } - binding.checkBox.setOnCheckedChangeListener { _, _ -> } - binding.btnNext.setOnClickListener { if (binding.checkBox.isChecked) { bajajFDInterface.stepFourApi("stepFourResponse") - }else{ - showDialogValidation(activity as BajajFdMainActivity, resources.getString(R.string.validTermsConditions)) + } else { + showDialogValidation( + activity as BajajFdMainActivity, + resources.getString(R.string.validTermsConditions) + ) } } return root @@ -96,14 +77,15 @@ class StepFourBajajFDFragment : Fragment() { fun getFDData(createFDApplicationResponse: CreateFDApplicationResponse) { uniqueId = createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId // - + getFDDetailsApi(uniqueId!!) + customerListApi() } - private fun paymentModeApi() { + private fun customerListApi() { if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { val getCodeRequest = GetCodeRequest() getCodeRequest.ProductName = getString(R.string.bajajFD) - getCodeRequest.Category = getString(R.string.genderCategory) + getCodeRequest.Category = getString(R.string.customerCategory) getCodeRequest.Language = getString(R.string.language) getCodeRequest.InputValue = "" stepFourBajajFDViewModel.paymentModeApi(getCodeRequest, Constants.token) @@ -116,7 +98,9 @@ class StepFourBajajFDFragment : Fragment() { getCodeResponse.Response.StatusCode.let { code -> when (code) { 200 -> { - + if (getCodeResponse.Response.GetCodesList.isNotEmpty()) { + setUpRecyclerView(getCodeResponse.Response.GetCodesList) + } } // 650 -> refreshToken() else -> {} @@ -139,24 +123,42 @@ class StepFourBajajFDFragment : Fragment() { } - private fun getFDDetailsApi() { + private fun setUpRecyclerView(getCustomerList: List) { + binding.rvTerms.layoutManager = + LinearLayoutManager(activity as BajajFdMainActivity) + val customerListAdapter = CustomerListAdapter(getCustomerList) + binding.rvTerms.adapter = customerListAdapter + + } + + private fun getFDDetailsApi(uniqueId: String) { if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { - val getCodeRequest = GetRatesRequest() - stepFourBajajFDViewModel.getFDDetails(getCodeRequest, Constants.token) + val getFDDetailsRequest = GetFDDetailsRequest() + getFDDetailsRequest.FDProvider = getString(R.string.bajaj) + getFDDetailsRequest.NiveshClientCode = + (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE + getFDDetailsRequest.UniqueId = uniqueId + stepFourBajajFDViewModel.getFDDetails(getFDDetailsRequest, Constants.token) stepFourBajajFDViewModel.getFDDetailsMutableData.observe(viewLifecycleOwner) { response -> when (response) { is Resource.Success -> { Log.e("response", "-->$response") - val getCodeResponse: GetCodeResponse = - Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java) - getCodeResponse.Response.StatusCode.let { code -> + val getFDDetailsResponse: GetFDDetailsResponse = + Gson().fromJson( + response.data?.toString(), + GetFDDetailsResponse::class.java + ) + getFDDetailsResponse.Response.StatusCode.let { code -> when (code) { 200 -> { - - binding.tvInvestedAmount.text = "" - binding.tvTenure.text = "" - binding.tvInterestPayout.text = "" - binding.tvRateOfInterest.text = "" + binding.tvInvestedAmount.text = + getFDDetailsResponse.Response.FDDataResponse.FDAmount.toString() + binding.tvTenure.text = + getFDDetailsResponse.Response.FDDataResponse.Tenure.toString() + binding.tvInterestPayout.text = + getFDDetailsResponse.Response.FDDataResponse.Frequency + binding.tvRateOfInterest.text = + getFDDetailsResponse.Response.FDDataResponse.RateOfInterest.toString() } // 650 -> refreshToken() else -> {} @@ -179,7 +181,7 @@ class StepFourBajajFDFragment : Fragment() { } - override fun onDestroyView() { + override fun onDestroyView() { super.onDestroyView() _binding = null } 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 c5e7dd6..20e4403 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 @@ -23,6 +23,7 @@ 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.PaymentModeAdapter import com.nivesh.production.bajajfd.adapter.RecommendedBankListAdapter import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepTwoBinding import com.nivesh.production.bajajfd.interfaces.BajajFDInterface @@ -38,6 +39,7 @@ import com.nivesh.production.bajajfd.util.Common.Companion.isValidEmail import com.nivesh.production.bajajfd.util.Common.Companion.isValidName import com.nivesh.production.bajajfd.util.Common.Companion.isValidPan import com.nivesh.production.bajajfd.util.Common.Companion.removeError +import com.nivesh.production.bajajfd.util.Constants import com.nivesh.production.bajajfd.util.Constants.Companion.token import com.nivesh.production.bajajfd.util.Resource import com.nivesh.production.bajajfd.viewModel.StepTwoBajajFDViewModel @@ -60,6 +62,8 @@ class StepTwoBajajFDFragment : Fragment() { private lateinit var listOfRelationShip: List private lateinit var listOfMaritalStatus: List private lateinit var listOfOccupation: List + private lateinit var listOfPayMode: List + private lateinit var listOfStates: List private lateinit var listOfCities: List @@ -67,6 +71,7 @@ class StepTwoBajajFDFragment : Fragment() { private lateinit var stepTwoBajajFDViewModel: StepTwoBajajFDViewModel private lateinit var bankListAdapter: BankListAdapter + private lateinit var paymentModeAdapter: PaymentModeAdapter private lateinit var stateObject: DataObject companion object { @@ -98,6 +103,7 @@ class StepTwoBajajFDFragment : Fragment() { listOfOccupation = ArrayList() listOfStates = ArrayList() listOfIFSC = ArrayList() + listOfPayMode = ArrayList() stateObject = DataObject() @@ -122,7 +128,7 @@ class StepTwoBajajFDFragment : Fragment() { } }) binding.edtMobileNumber.setText((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.mobile) - + binding.edtMobileNumber.setSelection(binding.edtMobileNumber.text.toString().length) // create an OnDateSetListener if (!(activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_DOB.isNullOrEmpty()) { binding.edtDOB.setText(getDate((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_DOB.toString())) @@ -390,7 +396,11 @@ class StepTwoBajajFDFragment : Fragment() { datePicker(binding.edtNomineeDOB) } - binding.spNomineeRelation.setText((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.Nominees?.get(0)?.NomineeRelationship) + binding.spNomineeRelation.setText( + (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.Nominees?.get( + 0 + )?.NomineeRelationship + ) binding.spNomineeRelation.setOnItemClickListener { _, _, _, _ -> removeError(binding.tlNomineeRelation) } @@ -522,11 +532,11 @@ class StepTwoBajajFDFragment : Fragment() { } } - rbPaymentMode.text = getString(R.string.Upi) - binding.rgPaymentMode.setOnCheckedChangeListener { group, checkedId -> - rbPaymentMode = group.findViewById(checkedId) - Log.e("paymentMode", "-->" + rbPaymentMode.text) - } +// rbPaymentMode.text = getString(R.string.Upi) +// binding.rgPaymentMode.setOnCheckedChangeListener { group, checkedId -> +// rbPaymentMode = group.findViewById(checkedId) +// Log.e("paymentMode", "-->" + rbPaymentMode.text) +// } binding.tvEligibleBankOption.setOnClickListener { apiForEligibleBankList() @@ -610,8 +620,9 @@ class StepTwoBajajFDFragment : Fragment() { binding.edtAddressLine3.text.toString() (activity as BajajFdMainActivity).applicantDetails.ApplicantCity = binding.spCity.text.toString() - // (activity as BajajFdMainActivity).applicantDetails.ApplicantState = binding.spState.text.toString() - (activity as BajajFdMainActivity).applicantDetails.ApplicantState = stateObject.State_Code + // (activity as BajajFdMainActivity).applicantDetails.ApplicantState = binding.spState.text.toString() + (activity as BajajFdMainActivity).applicantDetails.ApplicantState = + stateObject.State_Code (activity as BajajFdMainActivity).applicantDetails.ApplicantCountry = "India" (activity as BajajFdMainActivity).applicantDetails.ApplicantPincode = binding.edtPinCode.text.toString().toInt() @@ -763,7 +774,8 @@ class StepTwoBajajFDFragment : Fragment() { else -> { Common.showDialogValidation( activity as BajajFdMainActivity, - getIFSCCodeListResponse.Response.message) + getIFSCCodeListResponse.Response.message + ) } } } @@ -771,7 +783,10 @@ class StepTwoBajajFDFragment : Fragment() { is Resource.Error -> { response.message?.let { message -> - Common.showDialogValidation(activity as BajajFdMainActivity, message) + Common.showDialogValidation( + activity as BajajFdMainActivity, + message + ) } } is Resource.Loading -> { @@ -804,7 +819,8 @@ class StepTwoBajajFDFragment : Fragment() { else -> { Common.showDialogValidation( activity as BajajFdMainActivity, - getIFSCCodeResponse.Response.message) + getIFSCCodeResponse.Response.message + ) } } } @@ -871,6 +887,9 @@ class StepTwoBajajFDFragment : Fragment() { } } + + + private fun datePicker(edtDOB: TextInputEditText) { val year = cal.get(Calendar.YEAR) val month = cal.get(Calendar.MONTH) @@ -1024,13 +1043,15 @@ class StepTwoBajajFDFragment : Fragment() { occupationApi() annualIncomeApi() stateListApi() + paymentModeApi() } // 650 -> refreshToken() else -> { Common.showDialogValidation( activity as BajajFdMainActivity, - getCodeResponse.Response.Errors[0].ErrorMessage) + getCodeResponse.Response.Errors[0].ErrorMessage + ) } } } @@ -1050,6 +1071,65 @@ class StepTwoBajajFDFragment : Fragment() { } } + private fun paymentModeApi() { + if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { + val getCodeRequest = GetCodeRequest() + getCodeRequest.ProductName = getString(R.string.bajajFD) + getCodeRequest.Category = getString(R.string.paymentModeCategory) + getCodeRequest.Language = getString(R.string.language) + getCodeRequest.InputValue = "" + stepTwoBajajFDViewModel.paymentModeApi(getCodeRequest, Constants.token) + stepTwoBajajFDViewModel.getPaymentModeMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + Log.e("response", "-->$response") + val getCodeResponse: GetCodeResponse = + Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java) + getCodeResponse.Response.StatusCode.let { code -> + when (code) { + 200 -> { + if (getCodeResponse.Response.GetCodesList.isNotEmpty()){ + listOfPayMode = getCodeResponse.Response.GetCodesList + setUpRecyclerViewPaymentMode(listOfPayMode) + } + } + // 650 -> refreshToken() + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getCodeResponse.Response.Errors[0].ErrorMessage + ) + } + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Common.showDialogValidation(activity as BajajFdMainActivity, message) + } + } + is Resource.Loading -> { + + } + } + } + + } + } + + private fun setUpRecyclerViewPaymentMode(listOfPayMode: List) { + + binding.rvPaymentMode.layoutManager = + LinearLayoutManager(activity as BajajFdMainActivity) + paymentModeAdapter = PaymentModeAdapter( + listOfPayMode, + listOfPayMode[0].Value + ) + binding.rvPaymentMode.adapter = paymentModeAdapter + } + + private fun genderApi() { if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { val getCodeRequest = GetCodeRequest() @@ -1085,7 +1165,8 @@ class StepTwoBajajFDFragment : Fragment() { else -> { Common.showDialogValidation( activity as BajajFdMainActivity, - getCodeResponse.Response.Errors[0].ErrorMessage) + getCodeResponse.Response.Errors[0].ErrorMessage + ) } } } @@ -1148,7 +1229,8 @@ class StepTwoBajajFDFragment : Fragment() { else -> { Common.showDialogValidation( activity as BajajFdMainActivity, - getCodeResponse.Response.Errors[0].ErrorMessage) + getCodeResponse.Response.Errors[0].ErrorMessage + ) } } } @@ -1204,7 +1286,8 @@ class StepTwoBajajFDFragment : Fragment() { else -> { Common.showDialogValidation( activity as BajajFdMainActivity, - getCodeResponse.Response.Errors[0].ErrorMessage) + getCodeResponse.Response.Errors[0].ErrorMessage + ) } } } @@ -1260,7 +1343,8 @@ class StepTwoBajajFDFragment : Fragment() { else -> { Common.showDialogValidation( activity as BajajFdMainActivity, - getCodeResponse.Response.Errors[0].ErrorMessage) + getCodeResponse.Response.Errors[0].ErrorMessage + ) } } } @@ -1316,7 +1400,8 @@ class StepTwoBajajFDFragment : Fragment() { else -> { Common.showDialogValidation( activity as BajajFdMainActivity, - getCodeResponse.Response.Errors[0].ErrorMessage) + getCodeResponse.Response.Errors[0].ErrorMessage + ) } } } @@ -1370,14 +1455,14 @@ class StepTwoBajajFDFragment : Fragment() { cityListApi(adapter.getItem(0)?.State_Id) stateObject = adapter.getItem(0) as DataObject - Log.e("if", " -->"+stateObject.State_Code) + Log.e("if", " -->" + stateObject.State_Code) } else { for (title in listOfStates) { if (title.State_Code == newTitleText) { binding.spState.setText(title.State_Name, false) cityListApi(title.State_Id) - stateObject = title - Log.e("else", " -->"+stateObject.State_Code) + stateObject = title + Log.e("else", " -->" + stateObject.State_Code) break } } @@ -1388,7 +1473,8 @@ class StepTwoBajajFDFragment : Fragment() { else -> { Common.showDialogValidation( activity as BajajFdMainActivity, - stateListResponse.response.message) + stateListResponse.response.message + ) } } } @@ -1464,7 +1550,8 @@ class StepTwoBajajFDFragment : Fragment() { else -> { Common.showDialogValidation( activity as BajajFdMainActivity, - cityListResponse.response.message) + cityListResponse.response.message + ) } } } @@ -1505,7 +1592,8 @@ class StepTwoBajajFDFragment : Fragment() { else -> { Common.showDialogValidation( activity as BajajFdMainActivity, - getFDBankListResponse.Response.Errors[0].ErrorMessage) + getFDBankListResponse.Response.Errors[0].ErrorMessage + ) } } } diff --git a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepFourBajajFDViewModel.kt b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepFourBajajFDViewModel.kt index 062b603..e68bff9 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepFourBajajFDViewModel.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepFourBajajFDViewModel.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.google.gson.JsonObject import com.nivesh.production.bajajfd.model.GetCodeRequest +import com.nivesh.production.bajajfd.model.GetFDDetailsRequest import com.nivesh.production.bajajfd.model.GetRatesRequest import com.nivesh.production.bajajfd.repositories.MainRepository import com.nivesh.production.bajajfd.util.Common.Companion.handleRatesResponse @@ -13,7 +14,6 @@ import kotlinx.coroutines.launch class StepFourBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() { - val getPaymentModeMutableData: MutableLiveData> = MutableLiveData() fun paymentModeApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch { getPaymentModeMutableData.postValue(Resource.Loading()) @@ -22,13 +22,12 @@ class StepFourBajajFDViewModel(private val mainRepository: MainRepository) : Vie } val getFDDetailsMutableData: MutableLiveData> = MutableLiveData() - fun getFDDetails(getRatesRequest: GetRatesRequest, token: String) = viewModelScope.launch { + fun getFDDetails(getRatesRequest: GetFDDetailsRequest, token: String) = viewModelScope.launch { getFDDetailsMutableData.postValue(Resource.Loading()) val response = mainRepository.getFDDetailsResponse(getRatesRequest, token) getFDDetailsMutableData.postValue(handleRatesResponse(response)) } - private val getRatesMutableData: MutableLiveData> = MutableLiveData() fun saveFDOtherData(getRatesRequest: GetRatesRequest, token: String) = viewModelScope.launch { getRatesMutableData.postValue(Resource.Loading()) 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 b76baef..a284c59 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 @@ -97,5 +97,11 @@ class StepTwoBajajFDViewModel(private val mainRepository: MainRepository) : View getifscCodeDetailsCheckMutableData.postValue(handleRatesResponse(response)) } + val getPaymentModeMutableData: MutableLiveData> = MutableLiveData() + fun paymentModeApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch { + getPaymentModeMutableData.postValue(Resource.Loading()) + val response = mainRepository.payModeCheck(getCodeRequest, token) + getPaymentModeMutableData.postValue(handleRatesResponse(response)) + } } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_bajajfd_step_four.xml b/app/src/main/res/layout/fragment_bajajfd_step_four.xml index 22a13de..110a22a 100644 --- a/app/src/main/res/layout/fragment_bajajfd_step_four.xml +++ b/app/src/main/res/layout/fragment_bajajfd_step_four.xml @@ -202,82 +202,27 @@ android:text="@string/termsAndCondition" android:textColor="@color/black" android:textSize="@dimen/text_size_14" - app:layout_constraintBottom_toTopOf="@+id/swDirectorBajajFinance" + app:layout_constraintBottom_toTopOf="@+id/llRVTerms" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/lblRateOfInterest" /> - + app:layout_constraintTop_toBottomOf="@+id/tvTermsCondition" + android:orientation="vertical"> - + - - - - - - - + + app:layout_constraintTop_toBottomOf="@+id/llRVTerms" /> + app:layout_constraintTop_toBottomOf="@+id/llRVTerms" /> 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 836d2bb..314daf8 100644 --- a/app/src/main/res/layout/fragment_bajajfd_step_two.xml +++ b/app/src/main/res/layout/fragment_bajajfd_step_two.xml @@ -1010,28 +1010,41 @@ - + android:layout_margin="@dimen/margin_5" + android:orientation="vertical"> - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_payment_list_preview.xml b/app/src/main/res/layout/item_payment_list_preview.xml new file mode 100644 index 0000000..0e095ca --- /dev/null +++ b/app/src/main/res/layout/item_payment_list_preview.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml index 5963c37..c5fdfa6 100644 --- a/app/src/main/res/values-hi-rIN/strings.xml +++ b/app/src/main/res/values-hi-rIN/strings.xml @@ -242,5 +242,7 @@ Aadhar Gallery Camera + PaymentMode + CustomerCategory \ 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 d6ab4a5..3c160f0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -244,6 +244,8 @@ Select Option Gallery Camera + PaymentMode + CustomerCategory Aadhaar Card