diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 40b9ab7..ba0157d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -33,7 +33,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 new file mode 100644 index 0000000..4b12412 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/adapter/RecommendedBankListAdapter.kt @@ -0,0 +1,39 @@ +package com.nivesh.production.bajajfd.adapter + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.nivesh.production.bajajfd.R +import com.nivesh.production.bajajfd.model.Bank + +class RecommendedBankListAdapter( + private val bankList: List +) : RecyclerView.Adapter() { + + class MyViewHolder(view: View) : RecyclerView.ViewHolder(view) { + val txtYear: TextView + + init { + 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_bank_list, parent, false) + return MyViewHolder(itemView) + } + + override fun onBindViewHolder(holder: MyViewHolder, position: Int) { + val bank: Bank = bankList[position] + holder.txtYear.text = bank.BankName + + } + + override fun getItemCount(): Int { + return bankList.size + } + +} \ 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 71c100e..006ec10 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 @@ -8,72 +8,156 @@ import retrofit2.http.* interface ApiInterface { - @POST("GetRates") - suspend fun getRates(@Body getRatesRequest: GetRatesRequest, @Header("token") token: String): Response - - @POST("CheckFDCKYC") - suspend fun checkFDKYC(@Body requestBody: RequestBody, @Header("token") token: String): Response - - @POST("CreateFDApplication") - suspend fun createFDApp(@Body requestBody: RequestBody, @Header("token") token: String): Response - - @POST("DocumentsUpload") - suspend fun documentsUpload(@Body requestBody: RequestBody, @Header("token") token: String): Response - - @POST("SaveFDOtherData") - suspend fun saveFDOtherData(@Body requestBody: RequestBody, @Header("token") token: String): Response - - @POST("GetFDDetails") - suspend fun getFDDetails(@Body requestBody: RequestBody, @Header("token") token: String): Response - - @POST("UpdateFDPaymentStatus") - suspend fun updateFDPaymentStatus(@Body requestBody: RequestBody, @Header("token") token: String): Response - - @POST("FinaliseFD") - suspend fun finaliseFD(@Body requestBody: RequestBody, @Header("token") token: String): Response - - @POST("FinaliseKYC") - suspend fun finaliseKYC(@Body requestBody: RequestBody, @Header("token") token: String): Response - - @POST("PaymentRequery") - suspend fun paymentReQuery(@Body requestBody: RequestBody, @Header("token") token: String): Response + @POST("WebApi_Bajaj/GetRates") + suspend fun getRates( + @Body getRatesRequest: GetRatesRequest, + @Header("token") token: String + ): Response + + @POST("WebApi_Bajaj/CheckFDCKYC") + suspend fun checkFDKYC( + @Body requestBody: RequestBody, + @Header("token") token: String + ): Response + + @POST("WebApi_Bajaj/CreateFDApplication") + suspend fun createFDApp( + @Body requestBody: RequestBody, + @Header("token") token: String + ): Response + + @POST("WebApi_Bajaj/DocumentsUpload") + suspend fun documentsUpload( + @Body requestBody: RequestBody, + @Header("token") token: String + ): Response + + @POST("WebApi_Bajaj/SaveFDOtherData") + suspend fun saveFDOtherData( + @Body requestBody: RequestBody, + @Header("token") token: String + ): Response + + @POST("WebApi_Bajaj/GetFDDetails") + suspend fun getFDDetails( + @Body requestBody: RequestBody, + @Header("token") token: String + ): Response + + @POST("WebApi_Bajaj/UpdateFDPaymentStatus") + suspend fun updateFDPaymentStatus( + @Body requestBody: RequestBody, + @Header("token") token: String + ): Response + + @POST("WebApi_Bajaj/FinaliseFD") + suspend fun finaliseFD( + @Body requestBody: RequestBody, + @Header("token") token: String + ): Response + + @POST("WebApi_Bajaj/FinaliseKYC") + suspend fun finaliseKYC( + @Body requestBody: RequestBody, + @Header("token") token: String + ): Response + + @POST("WebApi_Bajaj/PaymentRequery") + suspend fun paymentReQuery( + @Body requestBody: RequestBody, + @Header("token") token: String + ): Response // @FormUrlEncoded - @POST("GetCodes") - suspend fun getCodes(@Body requestBody: GetCodeRequest, @Header("token") token: String): Response - - @POST("CalculateFDMaturityAmount") - suspend fun getCalculateFDMaturityAmount(@Body requestBody: GetMaturityAmountRequest, @Header("token") token: String): Response - - @POST("api/PanCheck_S") - suspend fun panCheckApi(@Body panCheck: PanCheckRequest, @Header("token") token: String): Response - - @POST("getFDStepsCount") - suspend fun getFDStepsCount(@Body fdStepsCountRequest: FDStepsCountRequest, @Header("token") token: String): Response - - @POST("GetCodes") - suspend fun titleApi(@Body getCodeRequest: GetCodeRequest, @Header("token") token: String): Response - - @POST("GetCodes") - suspend fun genderApi(@Body getCodeRequest: GetCodeRequest, @Header("token") token: String): Response - - @POST("GetCodes") - suspend fun annualIncomeApi(@Body getCodeRequest: GetCodeRequest, @Header("token") token: String): Response - - @POST("GetCodes") - suspend fun relationShipApi(@Body getCodeRequest: GetCodeRequest, @Header("token") token: String): Response - - @POST("GetCodes") - suspend fun maritalStatusApi(@Body getCodeRequest: GetCodeRequest, @Header("token") token: String): Response - - @POST("GetCodes") - suspend fun occupationApi(@Body getCodeRequest: GetCodeRequest, @Header("token") token: String): Response - - @POST("GetStateMaster") - suspend fun stateApi( @Header("token") token: String): Response - - @POST("api/GetCity") - suspend fun cityApi(@Body cityRequest: CityRequest, @Header("token") token: String): Response - + @POST("WebApi_Bajaj/GetCodes") + suspend fun getCodes( + @Body requestBody: GetCodeRequest, + @Header("token") token: String + ): Response + + @POST("WebApi_Bajaj/CalculateFDMaturityAmount") + suspend fun getCalculateFDMaturityAmount( + @Body requestBody: GetMaturityAmountRequest, + @Header("token") token: String + ): Response + + @POST("WebApi_Bajaj/api/PanCheck_S") + suspend fun panCheckApi( + @Body panCheck: PanCheckRequest, + @Header("token") token: String + ): Response + + @POST("WebApi_Bajaj/getFDStepsCount") + suspend fun getFDStepsCount( + @Body fdStepsCountRequest: FDStepsCountRequest, + @Header("token") token: String + ): Response + + @POST("WebApi/api/GetClientDetailV2_S") + suspend fun getClientDetails( + @Body getClientDetailsRequest: getClientDetailsRequest, + @Header("token") token: String + ): Response + + + @POST("WebApi_Bajaj/GetCodes") + suspend fun titleApi( + @Body getCodeRequest: GetCodeRequest, + @Header("token") token: String + ): Response + + @POST("WebApi_Bajaj/GetCodes") + suspend fun genderApi( + @Body getCodeRequest: GetCodeRequest, + @Header("token") token: String + ): Response + + @POST("WebApi_Bajaj/GetCodes") + suspend fun annualIncomeApi( + @Body getCodeRequest: GetCodeRequest, + @Header("token") token: String + ): Response + + @POST("WebApi_Bajaj/GetCodes") + suspend fun relationShipApi( + @Body getCodeRequest: GetCodeRequest, + @Header("token") token: String + ): Response + + @POST("WebApi_Bajaj/GetCodes") + suspend fun maritalStatusApi( + @Body getCodeRequest: GetCodeRequest, + @Header("token") token: String + ): Response + + @POST("WebApi_Bajaj/GetCodes") + suspend fun occupationApi( + @Body getCodeRequest: GetCodeRequest, + @Header("token") token: String + ): Response + + @POST("WebApi_Bajaj/api/GetStateMaster") + suspend fun stateApi(@Header("token") token: String): Response + + @POST("WebApi_Bajaj/api/GetCity") + suspend fun cityApi( + @Body cityRequest: CityRequest, + @Header("token") token: String + ): Response + + @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 + + @POST("WebApi_Bajaj/GetCodes") + suspend fun payModeApi( + @Body getCodeRequest: GetCodeRequest, + @Header("token") token: String + ): Response } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/interfaces/BajajFDInterface.kt b/app/src/main/java/com/nivesh/production/bajajfd/interfaces/BajajFDInterface.kt index 92c09ba..51af31f 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/interfaces/BajajFDInterface.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/interfaces/BajajFDInterface.kt @@ -2,7 +2,7 @@ package com.nivesh.production.bajajfd.interfaces interface BajajFDInterface { fun stepOneApi(data: String?) - fun stepTwoApi(data: String?) + fun stepTwoApi(data: CreateFDRequest) fun stepThreeApi(data: String?) fun stepFourApi(data: String?) } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/Bank.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/Bank.kt new file mode 100644 index 0000000..b0a0931 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/Bank.kt @@ -0,0 +1,6 @@ +package com.nivesh.production.bajajfd.model + +data class Bank( + val BankName: String, + val IFSC4Mapping: String +) \ 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/CityListResponse.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/CityListResponse.kt index 72a9bfc..c14725a 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/model/CityListResponse.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/CityListResponse.kt @@ -2,7 +2,5 @@ package com.nivesh.production.bajajfd.model data class CityListResponse( val DataObject: List, - val Message: Any, - val ObjectResponse: Any, val response: ResponseXXXXXX ) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/CityRequest.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/CityRequest.kt index 8ffae60..9c20f7a 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/model/CityRequest.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/CityRequest.kt @@ -8,7 +8,7 @@ data class CityRequest( var RMCode: String?="", var RoleID: Int = 0, var Source: String? = "", - var StateCode: Int = 0, + var StateCode: Int? = 0, var Subbroker_Code: String? = "", var Type: String?= "", var UID: Int = 0 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 new file mode 100644 index 0000000..52e87e8 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ClientBanklist.kt @@ -0,0 +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 +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/ClientDetails.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ClientDetails.kt new file mode 100644 index 0000000..38c73cd --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ClientDetails.kt @@ -0,0 +1,22 @@ +package com.nivesh.production.bajajfd.model + +data class ClientDetails( + val ARNexpiredFlag: Boolean, + val EditProfileMessage: String, + val IsPartiallyFilled: Boolean, + val KYCstatus: String, + val ProfileMessage: String, + val ProfileStatus: String, + val UnifiedMessage: String, + val appliaction1_image_name: String, + val city_of_birth: String, + val clientMasterMFD: ClientMasterMFD, + val country_of_birth: String, + val created_by: String, + val created_date: String, + val email: String, + val mobile: String, + val modified_by: String, + val modified_date: String, + val sub_broker_code: String +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/ClientMasterMFD.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ClientMasterMFD.kt new file mode 100644 index 0000000..dfcfec8 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ClientMasterMFD.kt @@ -0,0 +1,40 @@ +package com.nivesh.production.bajajfd.model + +data class ClientMasterMFD( + val CLIENT_ACCNO1: String, + val CLIENT_ACCTYPE1: String, + val CLIENT_ADD1: String, + val CLIENT_ADD2: String, + val CLIENT_ADD3: String, + val CLIENT_APPNAME1: String, + val CLIENT_CITY: String, + val CLIENT_CODE: String, + val CLIENT_COMMMODE: String, + val CLIENT_COUNTRY: String, + val CLIENT_DIVPAYMODE: String, + val CLIENT_DOB: String, + val CLIENT_EMAIL: String, + val CLIENT_FATHER_HUSBAND_GUARDIAN: String, + val CLIENT_GENDER: String, + val CLIENT_GUARDIANPAN: String, + val CLIENT_HOLDING: String, + val CLIENT_NEFT_IFSCCODE1: String, + val CLIENT_OCCUPATION_CODE: String, + val CLIENT_PAN: String, + val CLIENT_PINCODE: String, + val CLIENT_STATE: String, + val CLIENT_TAXSTATUS: String, + val CLIENT_TYPE: String, + val CM_MOBILE: String, + val Client_Title: String, + val DEFAULT_BLANK_FLAG1: String, + val Filler1: String, + val Filler2: String, + val Filler3: Any, + val NominationAuthMode: String, + val NominationOptFlag: String, + val Nominee_Title: String, + val Nominees: List, + val ParentName: String, + val ums_id: String +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/CreateFDApplicationResponse.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/CreateFDApplicationResponse.kt new file mode 100644 index 0000000..3465640 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/CreateFDApplicationResponse.kt @@ -0,0 +1,5 @@ +package com.nivesh.production.bajajfd.model + +data class CreateFDApplicationResponse( + val Response: ResponseXXXXXXXXXXX +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/DataObject.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/DataObject.kt index c4a296f..499aa70 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/model/DataObject.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/DataObject.kt @@ -1,5 +1,7 @@ package com.nivesh.production.bajajfd.model +import java.io.Serializable + data class DataObject( val BSE_State_Code: String, val CAMS_statecode: String, @@ -8,4 +10,8 @@ data class DataObject( val State_Id: Int, val State_Name: String, val signzyCode: String -) \ No newline at end of file +): Serializable { + override fun toString(): String { + return State_Name + } +} \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/DataObjectX.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/DataObjectX.kt index 542f198..7599a9d 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/model/DataObjectX.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/DataObjectX.kt @@ -3,4 +3,8 @@ package com.nivesh.production.bajajfd.model data class DataObjectX( val city_id: Int, val city_name: String -) \ No newline at end of file +) { + override fun toString(): String { + return city_name + } +} \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/DeviceInfo.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/DeviceInfo.kt new file mode 100644 index 0000000..d7b0b88 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/DeviceInfo.kt @@ -0,0 +1,12 @@ +package com.nivesh.production.bajajfd.model + +data class DeviceInfo( + var app_version: String? = "", + var device_id: String? = "", + var device_model: String? = "", + var device_name: String? ="", + var device_os_version: String? = "", + var device_token: String? = "", + var device_type: String? = "", + var device_id_for_UMSId : String? = "" +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/FDCreationDetailsResponse.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/FDCreationDetailsResponse.kt new file mode 100644 index 0000000..2d4524c --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/FDCreationDetailsResponse.kt @@ -0,0 +1,7 @@ +package com.nivesh.production.bajajfd.model + +data class FDCreationDetailsResponse( + val DocumentUploadFlag: Int, + val UniqueId: String, + val kycFlag: Int +) \ 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 11e1470..e8c7329 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 Label } + + + } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/GetFDBankListResponse.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/GetFDBankListResponse.kt new file mode 100644 index 0000000..cebf1e3 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/GetFDBankListResponse.kt @@ -0,0 +1,5 @@ +package com.nivesh.production.bajajfd.model + +data class GetFDBankListResponse( + val Response: ResponseXXXXXXXX +) \ 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/Nominee.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/Nominee.kt new file mode 100644 index 0000000..31c1ae6 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/Nominee.kt @@ -0,0 +1,12 @@ +package com.nivesh.production.bajajfd.model + +data class Nominee( + val NomineeApplicablePercent: Double, + val NomineeDOB: String, + val NomineeGuardian: String, + val NomineeGuardianPAN: String, + val NomineeMinorFlag: String, + val NomineeName: String, + val NomineePAN: String, + val NomineeRelationship: String +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/ObjectResponse.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ObjectResponse.kt new file mode 100644 index 0000000..ae043f7 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ObjectResponse.kt @@ -0,0 +1,9 @@ +package com.nivesh.production.bajajfd.model + +data class ObjectResponse( + val TransactionCount: Int, + val clientDetails: ClientDetails, + val languageid: Int, + val membersList: List, + val ClientBanklist : List +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXX.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXX.kt new file mode 100644 index 0000000..1adec00 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXX.kt @@ -0,0 +1,7 @@ +package com.nivesh.production.bajajfd.model + +data class ResponseXXXXXXX( + 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/model/ResponseXXXXXXXX.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXX.kt new file mode 100644 index 0000000..b674b23 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXX.kt @@ -0,0 +1,9 @@ +package com.nivesh.production.bajajfd.model + +data class ResponseXXXXXXXX( + val BankList: List, + val Errors: List, + 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/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/model/ResponseXXXXXXXXXXX.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXX.kt new file mode 100644 index 0000000..0653d1d --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXX.kt @@ -0,0 +1,9 @@ +package com.nivesh.production.bajajfd.model + +data class ResponseXXXXXXXXXXX( + val Errors: Any, + val FDCreationDetailsResponse: FDCreationDetailsResponse, + 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/model/UserRequest.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/UserRequest.kt new file mode 100644 index 0000000..b6a37e6 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/UserRequest.kt @@ -0,0 +1,10 @@ +package com.nivesh.production.bajajfd.model + +data class UserRequest( + var AppOrWeb: String? = "", + var IPAddress: String? = "", + var LoggedInRoleId: Int = 0, + var Source: String? = "", + var UID: Int? = 0, + var deviceInfo: DeviceInfo? = null +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/getClientDetailsRequest.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/getClientDetailsRequest.kt new file mode 100644 index 0000000..e140749 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/getClientDetailsRequest.kt @@ -0,0 +1,8 @@ +package com.nivesh.production.bajajfd.model + +data class getClientDetailsRequest( + var AppOrWeb: String? = "", + var UserRequest: UserRequest? = null, + var client_code: String? = "", + var sub_broker_code: String? = "" +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/getClientDetailsResponse.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/getClientDetailsResponse.kt new file mode 100644 index 0000000..a60896a --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/getClientDetailsResponse.kt @@ -0,0 +1,8 @@ +package com.nivesh.production.bajajfd.model + +data class getClientDetailsResponse( +// val DataObject: Any ?, +// val Message: Any, + val ObjectResponse: ObjectResponse? = null, + val response: ResponseXXXXXXX? = null +) \ 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 27d34f6..4dcb559 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 @@ -7,12 +7,19 @@ class MainRepository constructor(private val apiInterface: ApiInterface) { suspend fun getRatesResponse(getRatesRequest: GetRatesRequest, token: String) = apiInterface.getRates(getRatesRequest, token) - suspend fun getCodesResponse(requestBody: GetCodeRequest , token: String) = + suspend fun getCodesResponse(requestBody: GetCodeRequest, token: String) = apiInterface.getCodes(requestBody, token) - suspend fun getStepsCountResponse(requestBody: FDStepsCountRequest , token: String) = + + suspend fun getStepsCountResponse(requestBody: FDStepsCountRequest, token: String) = apiInterface.getFDStepsCount(requestBody, token) - suspend fun createCalculateFDMaturityAmount(requestBody: GetMaturityAmountRequest, token: String) = + suspend fun getClientDetailsResponse(getClientDetails: getClientDetailsRequest, token: String) = + apiInterface.getClientDetails(getClientDetails, token) + + suspend fun createCalculateFDMaturityAmount( + requestBody: GetMaturityAmountRequest, + token: String + ) = apiInterface.getCalculateFDMaturityAmount(requestBody, token) @@ -61,8 +68,21 @@ class MainRepository constructor(private val apiInterface: ApiInterface) { suspend fun occupationCheck(getCodeRequest: GetCodeRequest, token: String) = apiInterface.occupationApi(getCodeRequest, token) - suspend fun stateCheck( token: String) = - apiInterface.stateApi( token) + suspend fun stateCheck(token: String) = + apiInterface.stateApi(token) + suspend fun cityCheck(cityRequest: CityRequest, token: String) = apiInterface.cityApi(cityRequest, token) + + 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) + + suspend fun payModeCheck(getCodeRequest: GetCodeRequest, token: String) = + apiInterface.payModeApi(getCodeRequest, token) } \ No newline at end of file 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 6e6a0ae..2b41fd8 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 @@ -26,6 +26,7 @@ import com.nivesh.production.bajajfd.viewModel.* class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { lateinit var binding: ActivityBajajFdBinding private lateinit var viewModel: BajajFDViewModel + private lateinit var viewModel1: BajajFDViewModel lateinit var stepOneBajajFDViewModel: StepOneBajajFDViewModel lateinit var stepTwoBajajFDViewModel: StepTwoBajajFDViewModel @@ -33,25 +34,25 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { lateinit var stepFourBajajFDViewModel: StepFourBajajFDViewModel lateinit var stepFiveBajajFDViewModel: StepFiveBajajFDViewModel - lateinit var createFDRequest: CreateFDRequest - lateinit var createFDApplicantRequest: CreateFDApplicationRequest - lateinit var applicantDetails: ApplicantDetails - lateinit var fdInvestmentDetails: FDInvestmentDetails - lateinit var applicantRelationDetails: ApplicantRelationDetails - lateinit var fdBankDetails: FdBankDetails - lateinit var nomineeDetails: NomineeDetails - lateinit var nomineeGuardianDetails: NomineeGuardianDetails + var createFDRequest: CreateFDRequest + var createFDApplicantRequest: CreateFDApplicationRequest + var applicantDetails: ApplicantDetails + var fdInvestmentDetails: FDInvestmentDetails + var applicantRelationDetails: ApplicantRelationDetails + var fdBankDetails: FdBankDetails + var nomineeDetails: NomineeDetails + var nomineeGuardianDetails: NomineeGuardianDetails + var getClientDetailsResponse: getClientDetailsResponse + + var stepCount : Int = 0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) init() } - private fun init() { - - binding = ActivityBajajFdBinding.inflate(layoutInflater) - setContentView(binding.root) - + init { + getClientDetailsResponse = getClientDetailsResponse() createFDRequest = CreateFDRequest() createFDApplicantRequest = CreateFDApplicationRequest() @@ -61,14 +62,49 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { fdBankDetails = FdBankDetails() nomineeDetails = NomineeDetails() nomineeGuardianDetails = NomineeGuardianDetails() + } + + private fun init() { + + binding = ActivityBajajFdBinding.inflate(layoutInflater) + setContentView(binding.root) + + +// createFDRequest = CreateFDRequest() +// createFDApplicantRequest = CreateFDApplicationRequest() +// +// fdInvestmentDetails = FDInvestmentDetails() +// applicantDetails = ApplicantDetails() +// applicantRelationDetails = ApplicantRelationDetails() +// fdBankDetails = FdBankDetails() +// nomineeDetails = NomineeDetails() +// nomineeGuardianDetails = NomineeGuardianDetails() //start Repository - viewModel = ViewModelProvider(this, FDModelProviderFactory(MainRepository(ApiClient.getApiClient)))[BajajFDViewModel::class.java] - stepOneBajajFDViewModel = ViewModelProvider(this, StepOneModelProviderFactory(MainRepository(ApiClient.getApiClient)))[StepOneBajajFDViewModel::class.java] - stepTwoBajajFDViewModel = ViewModelProvider(this, StepTwoModelProviderFactory(MainRepository(ApiClient.getApiClient)))[StepTwoBajajFDViewModel::class.java] - stepThreeBajajFDViewModel = ViewModelProvider(this, StepThreeModelProviderFactory(MainRepository(ApiClient.getApiClient)))[StepThreeBajajFDViewModel::class.java] - stepFourBajajFDViewModel = ViewModelProvider(this, StepFourModelProviderFactory(MainRepository(ApiClient.getApiClient)))[StepFourBajajFDViewModel::class.java] - stepFiveBajajFDViewModel = ViewModelProvider(this, StepFiveModelProviderFactory(MainRepository(ApiClient.getApiClient)))[StepFiveBajajFDViewModel::class.java] + viewModel = ViewModelProvider( + this, + FDModelProviderFactory(MainRepository(ApiClient.getApiClient)) + )[BajajFDViewModel::class.java] + stepOneBajajFDViewModel = ViewModelProvider( + this, + StepOneModelProviderFactory(MainRepository(ApiClient.getApiClient)) + )[StepOneBajajFDViewModel::class.java] + stepTwoBajajFDViewModel = ViewModelProvider( + this, + StepTwoModelProviderFactory(MainRepository(ApiClient.getApiClient)) + )[StepTwoBajajFDViewModel::class.java] + stepThreeBajajFDViewModel = ViewModelProvider( + this, + StepThreeModelProviderFactory(MainRepository(ApiClient.getApiClient)) + )[StepThreeBajajFDViewModel::class.java] + stepFourBajajFDViewModel = ViewModelProvider( + this, + StepFourModelProviderFactory(MainRepository(ApiClient.getApiClient)) + )[StepFourBajajFDViewModel::class.java] + stepFiveBajajFDViewModel = ViewModelProvider( + this, + StepFiveModelProviderFactory(MainRepository(ApiClient.getApiClient)) + )[StepFiveBajajFDViewModel::class.java] if (Common.isNetworkAvailable(this)) { getStepsCountApi() @@ -79,7 +115,7 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { } } - private fun getStepsCountApi(){ + private fun getStepsCountApi() { val fdStepsCount = FDStepsCountRequest() fdStepsCount.FDProvider = getString(R.string.bajaj) fdStepsCount.NiveshClientCode = "8872" @@ -93,7 +129,9 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { stepsCountResponse.Response.StatusCode.let { code -> when (code) { 200 -> { - setViewPager(stepsCountResponse.Response.StepsCount) + stepCount = stepsCountResponse.Response.StepsCount + getClientDetailsApi(stepsCountResponse.Response.StepsCount) + // setViewPager(stepsCountResponse.Response.StepsCount) } // 650 -> refreshToken() else -> {} @@ -113,6 +151,66 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { } } + private fun getClientDetailsApi(stepsCount: Int) { + if (Common.isNetworkAvailable(this@BajajFdMainActivity)) { + val getClientDetailsRequest = getClientDetailsRequest() + getClientDetailsRequest.client_code = "8872" + getClientDetailsRequest.AppOrWeb = "App" + getClientDetailsRequest.sub_broker_code = "1038" + + val userRequest = UserRequest() + userRequest.UID = 19060 + userRequest.IPAddress = "" + userRequest.Source = "Nivesh" + userRequest.AppOrWeb = "App" + userRequest.LoggedInRoleId = 5 + + val deviceInfo = DeviceInfo() + deviceInfo.device_id = "" + deviceInfo.device_id_for_UMSId = "" + deviceInfo.device_type = "App" + deviceInfo.device_model = "" + deviceInfo.device_token = "" + deviceInfo.device_name = "" + deviceInfo.app_version = "" + deviceInfo.device_os_version = "" + userRequest.deviceInfo = deviceInfo + getClientDetailsRequest.UserRequest = userRequest + Log.e("getClientDetailRequest", "-->" + Gson().toJson(getClientDetailsRequest)) + viewModel.getClientDetails(getClientDetailsRequest, token) + viewModel.getClientDetailsMutableData.observe(this) { response -> + when (response) { + is Resource.Success -> { + Log.e("response", "-->$response") + getClientDetailsResponse = + Gson().fromJson( + response.data?.toString(), + getClientDetailsResponse::class.java + ) + getClientDetailsResponse.response?.status_code.let { code -> + when (code) { + 200 -> { + setViewPager(stepsCount) + } + // 650 -> refreshToken() + else -> {} + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Log.e(" ", "An error occurred:$message") + } + } + is Resource.Loading -> { + + } + } + } + } + } + private fun setViewPager(stepsCount: Int) { // steps setting @@ -213,14 +311,23 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { } // step 2 response - override fun stepTwoApi(data: String?) { + override fun stepTwoApi(data: CreateFDRequest) { Log.e("stepTwoApi", " response ---> $data") - binding.viewPager.currentItem = 2 + + if (stepCount == 4) { + binding.viewPager.currentItem = 2 + }else{ + // call create fd api + } + } // step 3 response override fun stepThreeApi(data: String?) { Log.e("stepThreeApi", " response ---> $data") + // call create fd api + + // StepFourBajajFDFragment.getInstance().getCreateFDResponse() binding.viewPager.currentItem = 3 } 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 903ca10..1a0f314 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 @@ -1,15 +1,23 @@ package com.nivesh.production.bajajfd.ui.fragment import android.os.Bundle +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment +import com.google.gson.Gson import com.nivesh.production.bajajfd.R import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepFourBinding import com.nivesh.production.bajajfd.interfaces.BajajFDInterface +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.ui.activity.BajajFdMainActivity +import com.nivesh.production.bajajfd.util.Common import com.nivesh.production.bajajfd.util.Common.Companion.showDialogValidation +import com.nivesh.production.bajajfd.util.Constants +import com.nivesh.production.bajajfd.util.Resource import com.nivesh.production.bajajfd.viewModel.StepFourBajajFDViewModel class StepFourBajajFDFragment : Fragment() { @@ -83,7 +91,88 @@ class StepFourBajajFDFragment : Fragment() { return root } - override fun onDestroyView() { + fun getCreateFDResponse() + { + + } + + private fun paymentModeApi() { + if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { + val getCodeRequest = GetCodeRequest() + getCodeRequest.ProductName = getString(R.string.bajajFD) + getCodeRequest.Category = getString(R.string.genderCategory) + getCodeRequest.Language = getString(R.string.language) + getCodeRequest.InputValue = "" + stepFourBajajFDViewModel.paymentModeApi(getCodeRequest, Constants.token) + stepFourBajajFDViewModel.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 -> { + + } + // 650 -> refreshToken() + else -> {} + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Log.e(" ", "An error occurred:$message") + } + } + is Resource.Loading -> { + + } + } + } + + } + + } + + private fun getFDDetailsApi() { + if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { + val getCodeRequest = GetRatesRequest() + stepFourBajajFDViewModel.getFDDetails(getCodeRequest, 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 -> + when (code) { + 200 -> { + + } + // 650 -> refreshToken() + else -> {} + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Log.e(" ", "An error occurred:$message") + } + } + is Resource.Loading -> { + + } + } + } + + } + } + + + override fun onDestroyView() { super.onDestroyView() _binding = null } 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 e4db4bf..c30abc0 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 @@ -73,6 +73,7 @@ class StepOneBajajFDFragment : Fragment() { listOfMinAmount = ArrayList() listOfMaxAmount = ArrayList() listOfFrequency = ArrayList() + rgMaturity = RadioButton(activity as BajajFdMainActivity) // Amount binding.edtAmount.addTextChangedListener(object : TextWatcher { @@ -122,6 +123,7 @@ class StepOneBajajFDFragment : Fragment() { } // Maturity Options + rgMaturity.text = getString(R.string.additionalDetailOne) binding.radioGroup.setOnCheckedChangeListener { group, checkedId -> rgMaturity = group.findViewById(checkedId) Log.e("Maturity", "-->" + rgMaturity.text) @@ -160,6 +162,8 @@ class StepOneBajajFDFragment : Fragment() { (activity as BajajFdMainActivity).fdInvestmentDetails.CustomerType = "" (activity as BajajFdMainActivity).fdInvestmentDetails.CKYCNumber = "" + (activity as BajajFdMainActivity).createFDApplicantRequest.FDInvestmentDetails = (activity as BajajFdMainActivity).fdInvestmentDetails + Log.e("Maturity", "-->" + rgMaturity.text) 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 4c29f15..1bf27b0 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,7 @@ package com.nivesh.production.bajajfd.ui.fragment +import android.app.DatePickerDialog +import android.app.Dialog import android.os.Bundle import android.text.Editable import android.text.InputFilter @@ -9,19 +11,28 @@ 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 import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment +import androidx.recyclerview.widget.LinearLayoutManager +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 import com.nivesh.production.bajajfd.util.Common.Companion.isIndianMobileNo import com.nivesh.production.bajajfd.util.Common.Companion.isValidEmail import com.nivesh.production.bajajfd.util.Common.Companion.isValidName @@ -30,6 +41,7 @@ import com.nivesh.production.bajajfd.util.Common.Companion.removeError import com.nivesh.production.bajajfd.util.Constants.Companion.token import com.nivesh.production.bajajfd.util.Resource import com.nivesh.production.bajajfd.viewModel.StepTwoBajajFDViewModel +import java.util.* class StepTwoBajajFDFragment : Fragment() { @@ -40,6 +52,7 @@ class StepTwoBajajFDFragment : Fragment() { private lateinit var bajajFDInterface: BajajFDInterface private lateinit var rbBank: RadioButton private lateinit var rbPaymentMode: RadioButton + private var cal = Calendar.getInstance() private lateinit var listOfTitle: List private lateinit var listOfGender: List @@ -50,7 +63,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 { @@ -80,6 +96,10 @@ class StepTwoBajajFDFragment : Fragment() { listOfMaritalStatus = ArrayList() listOfOccupation = ArrayList() listOfStates = ArrayList() + listOfIFSC = ArrayList() + + rbPaymentMode = RadioButton(activity as BajajFdMainActivity) + // Personal Details binding.edtMobileNumber.filters = arrayOf(LengthFilter(10)) binding.edtPANNumber.filters = arrayOf(LengthFilter(10)) @@ -98,9 +118,19 @@ class StepTwoBajajFDFragment : Fragment() { removeError(binding.tlMobileNumber) } }) + binding.edtMobileNumber.setText((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.mobile) + + // 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())) + } binding.edtDOB.setOnClickListener { removeError(binding.tlDOB) + datePicker(binding.edtDOB) } + + + binding.edtPANNumber.setText((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_PAN) binding.edtPANNumber.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { @@ -116,9 +146,11 @@ class StepTwoBajajFDFragment : Fragment() { } } }) + binding.spTitle.setOnItemClickListener { _, _, _, _ -> removeError(binding.tlTitle) } + binding.edtFirstName.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { @@ -155,9 +187,30 @@ class StepTwoBajajFDFragment : Fragment() { removeError(binding.tlLastName) } }) + + val splitStringName = + (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_APPNAME1?.split( + "\\s".toRegex() + )?.toTypedArray() + when (splitStringName?.size) { + 1 -> { + binding.edtFirstName.setText(splitStringName[0]) + } + 2 -> { + binding.edtFirstName.setText(splitStringName[0]) + binding.edtLastName.setText(splitStringName[1]) + } + 3 -> { + binding.edtFirstName.setText(splitStringName[0]) + binding.edtMiddleName.setText(splitStringName[1]) + binding.edtLastName.setText(splitStringName[2]) + } + } + binding.spGender.setOnItemClickListener { _, _, _, _ -> removeError(binding.tlGender) } + binding.edtEmail.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { @@ -170,9 +223,12 @@ class StepTwoBajajFDFragment : Fragment() { removeError(binding.tlEmail) } }) + binding.edtEmail.setText((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_EMAIL) + binding.spOccupation.setOnItemClickListener { _, _, _, _ -> removeError(binding.tlOccupation) } + binding.edtQualification.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { @@ -186,27 +242,10 @@ class StepTwoBajajFDFragment : Fragment() { } }) - binding.spMarital.setOnItemClickListener { _, _, _, _ -> removeError(binding.tlMarital) } - binding.spRelation.setOnItemClickListener { _, _, _, _ -> - removeError(binding.tlRelation) - } - - binding.edtRelationName.addTextChangedListener(object : TextWatcher { - - override fun afterTextChanged(s: Editable?) { - } - - override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { - } - - override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { - removeError(binding.tlRelationName) - } - }) binding.edtAddressLine1.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { @@ -219,6 +258,8 @@ class StepTwoBajajFDFragment : Fragment() { removeError(binding.tlAddressLine1) } }) + binding.edtAddressLine1.setText((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_ADD1) + binding.edtAddressLine2.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { @@ -231,6 +272,8 @@ class StepTwoBajajFDFragment : Fragment() { removeError(binding.tlAddressLine2) } }) + binding.edtAddressLine2.setText((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_ADD2) + binding.edtAddressLine3.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { @@ -243,6 +286,7 @@ class StepTwoBajajFDFragment : Fragment() { removeError(binding.tlAddressLine3) } }) + binding.edtAddressLine3.setText((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_ADD3) binding.spState.setOnItemClickListener { _, _, _, _ -> removeError(binding.tlState) @@ -262,11 +306,13 @@ class StepTwoBajajFDFragment : Fragment() { removeError(binding.tlPinCode) } }) + binding.edtPinCode.setText((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_PINCODE) // Nominee Details binding.spNomineeTitle.setOnItemClickListener { _, _, _, _ -> binding.tlNomineeTitle.error = null } + binding.edtNomineeFirstName.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { @@ -303,13 +349,39 @@ class StepTwoBajajFDFragment : Fragment() { removeError(binding.tlNomineeLastName) } }) + + val splitNomineeName = + (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.Nominees?.get( + 0 + )?.NomineeName?.split( + "\\s".toRegex() + )?.toTypedArray() + when (splitNomineeName?.size) { + 1 -> { + binding.edtNomineeFirstName.setText(splitNomineeName[0]) + } + 2 -> { + binding.edtNomineeFirstName.setText(splitNomineeName[0]) + binding.edtNomineeLastName.setText(splitNomineeName[1]) + } + 3 -> { + binding.edtNomineeFirstName.setText(splitNomineeName[0]) + binding.edtNomineeMiddleName.setText(splitNomineeName[1]) + binding.edtNomineeLastName.setText(splitNomineeName[2]) + } + } + + if (!(activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.Nominees?.get(0)?.NomineeDOB.isNullOrEmpty()){ + binding.edtNomineeDOB.setText(getDate((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.Nominees?.get(0)?.NomineeDOB.toString())) + } binding.edtNomineeDOB.setOnClickListener { removeError(binding.tlNomineeDOB) + datePicker(binding.edtNomineeDOB) } + binding.spNomineeRelation.setOnItemClickListener { _, _, _, _ -> removeError(binding.tlNomineeRelation) } - binding.cbNomineeSameAddress.setOnCheckedChangeListener { _, _ -> } @@ -327,6 +399,12 @@ class StepTwoBajajFDFragment : Fragment() { removeError(binding.tlGuardianName) } }) + binding.edtGuardianName.setText( + (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.Nominees?.get( + 0 + )?.NomineeGuardian + ) + binding.edtGuardianAge.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { @@ -339,9 +417,11 @@ class StepTwoBajajFDFragment : Fragment() { removeError(binding.tlGuardianAge) } }) + binding.spGuardianRelation.setOnItemClickListener { _, _, _, _ -> removeError(binding.tlGuardianRelation) } + binding.edtGuardianAddress.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { @@ -384,6 +464,7 @@ class StepTwoBajajFDFragment : Fragment() { override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { removeError(binding.tlIFSC) + ifscCodeCheckApi(s.toString()) } }) binding.edtAccountNumber.addTextChangedListener(object : TextWatcher { @@ -423,11 +504,42 @@ class StepTwoBajajFDFragment : Fragment() { } }) + binding.btnAddBank.setOnClickListener { + if (validateBank()) { + /// as + } + } + + rbPaymentMode.text = getString(R.string.Upi) binding.rgPaymentMode.setOnCheckedChangeListener { group, checkedId -> rbPaymentMode = group.findViewById(checkedId) Log.e("paymentMode", "-->" + rbPaymentMode.text) } + 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) { @@ -451,7 +563,6 @@ class StepTwoBajajFDFragment : Fragment() { } } - titleApi() binding.btnNext.setOnClickListener { if (validation()) { // Applicant Details @@ -483,7 +594,8 @@ class StepTwoBajajFDFragment : Fragment() { binding.edtAddressLine1.text.toString() (activity as BajajFdMainActivity).applicantDetails.ApplicantAddress2 = binding.edtAddressLine2.text.toString() - (activity as BajajFdMainActivity).applicantDetails.ApplicantAddress3 = binding.edtAddressLine3.text.toString() + (activity as BajajFdMainActivity).applicantDetails.ApplicantAddress3 = + binding.edtAddressLine3.text.toString() (activity as BajajFdMainActivity).applicantDetails.ApplicantCity = binding.spCity.text.toString() (activity as BajajFdMainActivity).applicantDetails.ApplicantState = @@ -491,7 +603,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 = "" @@ -533,13 +646,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 = "" @@ -547,19 +669,32 @@ 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() - bajajFDInterface.stepTwoApi("stepTwoResponse") + (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).createFDRequest) + ) + bajajFDInterface.stepTwoApi((activity as BajajFdMainActivity).createFDRequest) } } @@ -570,6 +705,171 @@ class StepTwoBajajFDFragment : Fragment() { 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, { _, years, monthOfYear, dayOfMonth -> + 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())) + edtDOB.setSelection(edtDOB.text.toString().length) + }, year, month, day + ) + datePickerDialog.datePicker.maxDate = cal.timeInMillis + val c = Calendar.getInstance() + c.add(Calendar.YEAR, -140) + datePickerDialog.datePicker.minDate = c.timeInMillis + datePickerDialog.show() + } + private fun panCheckApi() { if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { val panCheck = PanCheckRequest() @@ -628,6 +928,7 @@ class StepTwoBajajFDFragment : Fragment() { } } + private fun titleApi() { if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { val getCodeRequest = GetCodeRequest() @@ -653,10 +954,36 @@ class StepTwoBajajFDFragment : Fragment() { listOfTitle ) binding.spTitle.setAdapter(adapter) - binding.spTitle.setText( - adapter.getItem(0)?.Value, - false - ) + + val titleText = + (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.Client_Title + val newTitleText = "$titleText." + if (titleText?.isEmpty()!!) { + binding.spTitle.setText( + adapter.getItem(0)?.Value, + false + ) + } else { + for (title in listOfTitle) { + if (title.Value == newTitleText) { + binding.spTitle.setText(title.Value, false) + break + } +// binding.spTitle.setOnTouchListener { v, event -> +// when (event?.action) { +// MotionEvent.ACTION_DOWN -> { +// binding.spTitle.setText( +// adapter.getItem(0)?.Value, +// false +// ) +// +// } +// } +// +// v?.onTouchEvent(event) ?: true +// } + } + } binding.spNomineeTitle.setAdapter(adapter) binding.spNomineeTitle.setText( @@ -691,6 +1018,7 @@ class StepTwoBajajFDFragment : Fragment() { } } + private fun genderApi() { if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { val getCodeRequest = GetCodeRequest() @@ -742,6 +1070,7 @@ class StepTwoBajajFDFragment : Fragment() { } } + private fun relationShipApi() { if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { val getCodeRequest = GetCodeRequest() @@ -766,11 +1095,6 @@ class StepTwoBajajFDFragment : Fragment() { R.layout.spinner_dropdown, listOfRelationShip ) - binding.spRelation.setAdapter(adapter) - binding.spRelation.setText( - adapter.getItem(0)?.Value, - false - ) binding.spNomineeRelation.setAdapter(adapter) binding.spNomineeRelation.setText( @@ -805,6 +1129,7 @@ class StepTwoBajajFDFragment : Fragment() { } } + private fun maritalStatusApi() { if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { val getCodeRequest = GetCodeRequest() @@ -856,6 +1181,7 @@ class StepTwoBajajFDFragment : Fragment() { } } + private fun occupationApi() { if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { val getCodeRequest = GetCodeRequest() @@ -907,6 +1233,7 @@ class StepTwoBajajFDFragment : Fragment() { } } + private fun annualIncomeApi() { if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { val getCodeRequest = GetCodeRequest() @@ -958,6 +1285,7 @@ class StepTwoBajajFDFragment : Fragment() { } } + private fun stateListApi() { if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { stepTwoBajajFDViewModel.stateApi(token) @@ -966,7 +1294,10 @@ class StepTwoBajajFDFragment : Fragment() { is Resource.Success -> { Log.e("response", "-->$response") val stateListResponse: StateListResponse = - Gson().fromJson(response.data?.toString(), StateListResponse::class.java) + Gson().fromJson( + response.data?.toString(), + StateListResponse::class.java + ) stateListResponse.response.status_code.let { code -> when (code) { 200 -> { @@ -978,11 +1309,23 @@ class StepTwoBajajFDFragment : Fragment() { listOfStates ) binding.spState.setAdapter(adapter) - binding.spState.setText( - adapter.getItem(0)?.State_Name, - false - ) - cityListApi(adapter.getItem(0)?.State_Code) + val newTitleText = + (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_STATE + if (newTitleText?.isEmpty()!!) { + binding.spState.setText( + adapter.getItem(0)?.State_Name, + false + ) + cityListApi(adapter.getItem(0)?.State_Id) + } else { + for (title in listOfStates) { + if (title.State_Code == newTitleText) { + binding.spState.setText(title.State_Name, false) + cityListApi(title.State_Id) + break + } + } + } } } // 650 -> refreshToken() @@ -1004,22 +1347,23 @@ class StepTwoBajajFDFragment : Fragment() { } } - private fun cityListApi(stateCode: String?) { + + private fun cityListApi(stateCode: Int?) { val cityRequest = CityRequest() - if (stateCode != null) { - cityRequest.StateCode = stateCode.toInt() - } + cityRequest.StateCode = stateCode cityRequest.Type = "" - cityRequest.ClientCode = "8872" + cityRequest.ClientCode = + (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE cityRequest.RoleID = 5 cityRequest.APIName = "" cityRequest.UID = 19060 - cityRequest.Subbroker_Code = "1014" + cityRequest.Subbroker_Code = + (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.sub_broker_code cityRequest.RMCode = "" cityRequest.HOCode = "" - cityRequest.Source = "Nivesh" - cityRequest.APP_Web = "App" + cityRequest.Source = getString(R.string.source) + cityRequest.APP_Web = getString(R.string.app) stepTwoBajajFDViewModel.cityListApi(cityRequest, token) stepTwoBajajFDViewModel.getCityListMutableData.observe(viewLifecycleOwner) { response -> when (response) { @@ -1037,11 +1381,23 @@ class StepTwoBajajFDFragment : Fragment() { R.layout.spinner_dropdown, listOfCities ) - binding.spIncome.setAdapter(adapter) - binding.spIncome.setText( - adapter.getItem(0)?.city_name, - false - ) + binding.spCity.setAdapter(adapter) + + val newTitleText = + (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CITY + if (newTitleText?.isEmpty()!!) { + binding.spCity.setText( + adapter.getItem(0)?.city_name, + false + ) + } else { + for (title in listOfCities) { + if (title.city_name == newTitleText) { + binding.spCity.setText(title.city_name, false) + break + } + } + } } } // 650 -> refreshToken() @@ -1062,6 +1418,67 @@ class StepTwoBajajFDFragment : Fragment() { } } + private fun apiForEligibleBankList() { + if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { + stepTwoBajajFDViewModel.bankListApi(token) + stepTwoBajajFDViewModel.getFDBankListMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + Log.e("response", "-->$response") + val getFDBankListResponse: GetFDBankListResponse = + Gson().fromJson( + response.data?.toString(), + GetFDBankListResponse::class.java + ) + getFDBankListResponse.Response.StatusCode.let { code -> + when (code) { + 200 -> { + if (getFDBankListResponse.Response.BankList.isNotEmpty()) { + dialogForBankList(getFDBankListResponse.Response.BankList) + } + } + // 650 -> refreshToken() + else -> {} + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Log.e(" ", "An error occurred:$message") + } + } + is Resource.Loading -> { + + } + } + } + + } + } + + private fun dialogForBankList(bankList: List) { + 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) + rvClientList.adapter = bankListAdapter + } + dialog.show() + } // validations private fun validation(): Boolean { @@ -1091,7 +1508,7 @@ class StepTwoBajajFDFragment : Fragment() { binding.tlPanNumber, getString(R.string.emptyPAN) ) - } else if (isValidPan(binding.edtPANNumber.text.toString())) { // EditText + } else if (!isValidPan(binding.edtPANNumber.text.toString())) { // EditText commonErrorMethod( binding.edtPANNumber, binding.tlPanNumber, @@ -1103,13 +1520,19 @@ 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, binding.tlFirstName, getString(R.string.emptyFirstName) ) - } else if (isValidName(binding.edtFirstName.text.toString())) { // EditText + } else if (!isValidName(binding.edtFirstName.text.toString())) { // EditText commonErrorMethod( binding.edtFirstName, binding.tlFirstName, @@ -1121,7 +1544,7 @@ class StepTwoBajajFDFragment : Fragment() { binding.tlMiddleName, getString(R.string.emptyMiddleName) ) - } else if (isValidName(binding.edtMiddleName.text.toString())) { // EditText + } else if (!isValidName(binding.edtMiddleName.text.toString())) { // EditText commonErrorMethod( binding.edtMiddleName, binding.tlMiddleName, @@ -1133,28 +1556,24 @@ class StepTwoBajajFDFragment : Fragment() { binding.tlLastName, getString(R.string.emptyLastName) ) - } else if (isValidName(binding.edtLastName.text.toString())) { // EditText + } else if (!isValidName(binding.edtLastName.text.toString())) { // EditText commonErrorMethod( binding.edtLastName, 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, @@ -1167,18 +1586,10 @@ class StepTwoBajajFDFragment : Fragment() { binding.tlMarital, getString(R.string.emptyMaritalStatus) ) - } else if (binding.spRelation.text.toString().isEmpty()) { // Spinner - commonSpinnerErrorMethod( - binding.spRelation, - binding.tlRelation, - getString(R.string.emptyRelation) - ) - } else if (binding.edtRelationName.text.toString().isEmpty()) { // EditText - commonErrorMethod( - binding.edtRelationName, - binding.tlRelationName, - getString(R.string.emptyRelationName) - ) + } 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, @@ -1191,14 +1602,18 @@ class StepTwoBajajFDFragment : Fragment() { binding.tlAddressLine2, getString(R.string.emptyAddressLine2) ) - }else if (binding.edtAddressLine3.text.toString().isEmpty()) { // EditText + } else if (binding.edtAddressLine3.text.toString().isEmpty()) { // EditText commonErrorMethod( binding.edtAddressLine3, binding.tlAddressLine3, getString(R.string.emptyAddressLine3) ) } else if (binding.spState.text.toString().isEmpty()) { // EditText - commonSpinnerErrorMethod(binding.spState, binding.tlState, getString(R.string.emptyState)) + commonSpinnerErrorMethod( + binding.spState, + binding.tlState, + getString(R.string.emptyState) + ) } else if (binding.spCity.text.toString().isEmpty()) { // EditText commonSpinnerErrorMethod(binding.spCity, binding.tlCity, getString(R.string.emptyCity)) } else if (binding.edtPinCode.text.toString().isEmpty()) { // EditText @@ -1213,23 +1628,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, @@ -1244,4 +1677,6 @@ class StepTwoBajajFDFragment : Fragment() { super.onDestroyView() _binding = null } -} \ No newline at end of file +} + + 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 500ca87..5cc34c9 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 @@ -1,5 +1,6 @@ package com.nivesh.production.bajajfd.util +import android.annotation.SuppressLint import android.app.Activity import android.app.AlertDialog import android.content.Context @@ -13,9 +14,11 @@ import android.util.Patterns import com.google.android.material.textfield.MaterialAutoCompleteTextView import com.google.android.material.textfield.TextInputEditText import com.google.android.material.textfield.TextInputLayout -import com.nivesh.production.bajajfd.BajajApplication import com.nivesh.production.bajajfd.R -import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity +import java.text.SimpleDateFormat +import java.time.LocalDate +import java.time.format.DateTimeFormatter +import java.util.* import java.util.regex.Matcher import java.util.regex.Pattern @@ -151,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, @@ -161,5 +174,12 @@ class Common { return false } + fun getDate(string :String): String { + val input = SimpleDateFormat("dd/MM/yyyy", Locale.US) + val mDate : Date? = input.parse(string) + // val simpleDateFormat = SimpleDateFormat("dd MMM, yyyy", Locale.US) + val simpleDateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.US) + return simpleDateFormat.format(mDate as Date) + } } } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/util/Constants.kt b/app/src/main/java/com/nivesh/production/bajajfd/util/Constants.kt index 53c0d20..d7cc998 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/util/Constants.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/util/Constants.kt @@ -3,7 +3,7 @@ package com.nivesh.production.bajajfd.util class Constants() { companion object { - const val BASE_URL = "https://providential.in/WebApi_Bajaj/" + const val BASE_URL = "https://providential.in/" const val token = "636F8F63-06C4-4D95-8562-392B34025FB0" } } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/BajajFDViewModel.kt b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/BajajFDViewModel.kt index c1f38a1..7ad9327 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/BajajFDViewModel.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/BajajFDViewModel.kt @@ -5,29 +5,27 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.google.gson.JsonObject import com.nivesh.production.bajajfd.model.FDStepsCountRequest -import com.nivesh.production.bajajfd.model.GetCodeRequest +import com.nivesh.production.bajajfd.model.getClientDetailsRequest import com.nivesh.production.bajajfd.repositories.MainRepository import com.nivesh.production.bajajfd.util.Resource import kotlinx.coroutines.launch -import okhttp3.RequestBody class BajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() { - // TODO: Implement the ViewModel - val getRatesMutableData: MutableLiveData> = MutableLiveData() - - fun getCode(requestBody: GetCodeRequest, token : String) = viewModelScope.launch { - getRatesMutableData.postValue(Resource.Loading()) - val response = mainRepository.getCodesResponse(requestBody, token) - getRatesMutableData.postValue(handleRatesResponse(response)) - } val getStepsCountMutableData: MutableLiveData> = MutableLiveData() - fun getStepsCount(requestBody: FDStepsCountRequest, token : String) = viewModelScope.launch { + fun getStepsCount(requestBody: FDStepsCountRequest, token: String) = viewModelScope.launch { getStepsCountMutableData.postValue(Resource.Loading()) val response = mainRepository.getStepsCountResponse(requestBody, token) getStepsCountMutableData.postValue(handleRatesResponse(response)) } + val getClientDetailsMutableData: MutableLiveData> = MutableLiveData() + fun getClientDetails(getClientDetailsRequest: getClientDetailsRequest, token: String) = + viewModelScope.launch { + getClientDetailsMutableData.postValue(Resource.Loading()) + val response = mainRepository.getClientDetailsResponse(getClientDetailsRequest, token) + getClientDetailsMutableData.postValue(handleRatesResponse(response)) + } private fun handleRatesResponse(response: retrofit2.Response): Resource { 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 c1d13a1..7f55996 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 @@ -4,6 +4,7 @@ import androidx.lifecycle.MutableLiveData 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.GetRatesRequest import com.nivesh.production.bajajfd.repositories.MainRepository import com.nivesh.production.bajajfd.util.Resource @@ -11,8 +12,24 @@ import kotlinx.coroutines.launch class StepFourBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() { - private val getRatesMutableData: MutableLiveData> = MutableLiveData() + 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)) + } + + val getFDDetailsMutableData: MutableLiveData> = MutableLiveData() + fun getFDDetails(getRatesRequest: GetRatesRequest, 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()) val response = mainRepository.saveFDOtherDataResponse(getRatesRequest, token) @@ -29,11 +46,7 @@ class StepFourBajajFDViewModel(private val mainRepository: MainRepository) : Vie } - fun getFDDetails(getRatesRequest: GetRatesRequest, token : String) = viewModelScope.launch { - getRatesMutableData.postValue(Resource.Loading()) - val response = mainRepository.getFDDetailsResponse(getRatesRequest, token) - getRatesMutableData.postValue(handleRatesResponse(response)) - } + fun updateFDPaymentStatus(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 185838e..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 @@ -104,4 +104,26 @@ class StepTwoBajajFDViewModel(private val mainRepository: MainRepository) : View getCityListMutableData.postValue(handleRatesResponse(response)) } + val getFDBankListMutableData: MutableLiveData> = MutableLiveData() + fun bankListApi( token: String) = viewModelScope.launch { + getFDBankListMutableData.postValue(Resource.Loading()) + val response = mainRepository.bankListCheck( token) + 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 5b62d5a..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,10 +134,11 @@ android:id="@+id/edtDOB" 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:drawableEnd="@drawable/svg_cal" - android:inputType="date" android:textSize="@dimen/text_size_14" /> @@ -154,34 +155,35 @@ android:id="@+id/edtPANNumber" android:layout_width="match_parent" android:layout_height="wrap_content" + android:inputType="textCapCharacters" + android:maxEms="10" android:paddingTop="@dimen/margin_15" android:paddingBottom="@dimen/margin_15" - android:maxEms="10" android:textSize="@dimen/text_size_14" /> + android:visibility="gone" /> + + + + + @@ -232,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" /> @@ -254,67 +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:textSize="@dimen/text_size_14" /> - - - - - - - - - - - + + android:layout_margin="@dimen/margin_5" + app:hintEnabled="false"> + android:textSize="@dimen/text_size_14" /> @@ -334,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" /> @@ -362,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" /> @@ -374,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" @@ -396,51 +379,22 @@ android:textSize="@dimen/text_size_14" /> - - - - - - - - + android:hint="@string/enterEmailAddress"> @@ -457,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" /> @@ -477,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" /> @@ -491,16 +445,16 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="@dimen/margin_5" - android:hint="@string/enterAddress2"> + android:hint="@string/enterAddress3"> @@ -523,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" /> @@ -532,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" /> @@ -586,7 +540,6 @@ app:drawableEndCompat="@drawable/svg_down_arrow" /> - @@ -653,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" /> @@ -673,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" /> @@ -694,9 +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="date" android:textSize="@dimen/text_size_14" /> @@ -705,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" @@ -748,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" /> @@ -768,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" /> @@ -780,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" @@ -815,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" /> @@ -835,10 +789,10 @@ android:id="@+id/edtGuardianPinCode" android:layout_width="match_parent" android:layout_height="wrap_content" + android:inputType="number" + android:maxEms="60" android:paddingTop="@dimen/margin_15" android:paddingBottom="@dimen/margin_15" - android:inputType="text" - android:maxEms="60" android:textSize="@dimen/text_size_14" /> @@ -859,12 +813,45 @@ android:textSize="@dimen/text_size_14" app:drawableRightCompat="@drawable/svg_down_arrow" /> + + + + + + + + + + + + + + + android:padding="@dimen/margin_10" + android:visibility="gone"> - @@ -932,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" /> @@ -973,38 +962,51 @@ + + + android:paddingEnd="@dimen/margin_15"> + 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..986c870 --- /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 new file mode 100644 index 0000000..8893b1a --- /dev/null +++ b/app/src/main/res/layout/layout_bank_list.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + \ 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 69a8bfd..731c97a 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 * @@ -185,6 +209,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. @@ -210,25 +235,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 - Aadhar - Gallery - Camera - Select Option - \ 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 d3704db..0b0bd4e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -42,7 +42,8 @@ InterestPayoutFreq EN Min. 12 months, Max. 60 months - + MINAmount + MAXAmount Please enter amount @@ -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) @@ -140,6 +155,8 @@ Please enter valid email address Please select occupation + Please select income + Please select Qualification Please select marital status Please select relation @@ -217,43 +234,11 @@ 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 - Doctype - AADHAR - Gallery - Camera - Select Option - - - - - - - - - - - - - - - - - + Aadhaar Card @@ -262,30 +247,4 @@ Driving Licence - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file