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 07370db..4fb702d 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 @@ -1,10 +1,7 @@ package com.nivesh.production.bajajfd.interfaces import com.google.gson.JsonObject -import com.nivesh.production.bajajfd.model.GetCodeRequest -import com.nivesh.production.bajajfd.model.GetMaturityAmountRequest -import com.nivesh.production.bajajfd.model.GetRatesRequest -import com.nivesh.production.bajajfd.model.PanCheckRequest +import com.nivesh.production.bajajfd.model.* import okhttp3.RequestBody import retrofit2.Response import retrofit2.http.* @@ -50,4 +47,37 @@ interface ApiInterface { @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("api/GetClientDetailV2_S") + suspend fun getClientDetails(@Body getClientDetailsRequest: getClientDetailsRequest, @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("api/GetStateMaster") + suspend fun stateApi( @Header("token") token: String): Response + + @POST("api/GetCity") + suspend fun cityApi(@Body cityRequest: CityRequest, @Header("token") token: String): Response + + } \ No newline at end of file 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 new file mode 100644 index 0000000..c14725a --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/CityListResponse.kt @@ -0,0 +1,6 @@ +package com.nivesh.production.bajajfd.model + +data class CityListResponse( + val DataObject: List, + 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 new file mode 100644 index 0000000..9c20f7a --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/CityRequest.kt @@ -0,0 +1,15 @@ +package com.nivesh.production.bajajfd.model + +data class CityRequest( + var APIName: String? = "", + var APP_Web: String?="", + var ClientCode: String?="", + var HOCode: String?="", + var RMCode: String?="", + var RoleID: Int = 0, + var Source: String? = "", + var StateCode: Int? = 0, + var Subbroker_Code: String? = "", + var Type: String?= "", + var UID: 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/DataObject.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/DataObject.kt new file mode 100644 index 0000000..499aa70 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/DataObject.kt @@ -0,0 +1,17 @@ +package com.nivesh.production.bajajfd.model + +import java.io.Serializable + +data class DataObject( + val BSE_State_Code: String, + val CAMS_statecode: String, + val Country_Id: Int, + val State_Code: String, + val State_Id: Int, + val State_Name: String, + val signzyCode: String +): 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 new file mode 100644 index 0000000..7599a9d --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/DataObjectX.kt @@ -0,0 +1,10 @@ +package com.nivesh.production.bajajfd.model + +data class DataObjectX( + val city_id: Int, + val city_name: String +) { + 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..82953a8 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/DeviceInfo.kt @@ -0,0 +1,11 @@ +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? = "" +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/FDStepsCountRequest.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/FDStepsCountRequest.kt new file mode 100644 index 0000000..79a9e1d --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/FDStepsCountRequest.kt @@ -0,0 +1,6 @@ +package com.nivesh.production.bajajfd.model + +data class FDStepsCountRequest( + var FDProvider: String? = "", + var NiveshClientCode: String? = "" +) \ 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..fa142c3 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ObjectResponse.kt @@ -0,0 +1,8 @@ +package com.nivesh.production.bajajfd.model + +data class ObjectResponse( + val TransactionCount: Int, + val clientDetails: ClientDetails, + val languageid: Int, + val membersList: List +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXX.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXX.kt new file mode 100644 index 0000000..89521d8 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXX.kt @@ -0,0 +1,9 @@ +package com.nivesh.production.bajajfd.model + +data class ResponseXXXX( + val Errors: Any, + val Message: String, + val Status: String, + val StatusCode: Int, + val StepsCount: Int +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXX.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXX.kt new file mode 100644 index 0000000..3b668b5 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXX.kt @@ -0,0 +1,7 @@ +package com.nivesh.production.bajajfd.model + +data class ResponseXXXXX( + 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/ResponseXXXXXX.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXX.kt new file mode 100644 index 0000000..cce2013 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXX.kt @@ -0,0 +1,7 @@ +package com.nivesh.production.bajajfd.model + +data class ResponseXXXXXX( + 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/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/StateListResponse.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/StateListResponse.kt new file mode 100644 index 0000000..8ed273c --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/StateListResponse.kt @@ -0,0 +1,8 @@ +package com.nivesh.production.bajajfd.model + +data class StateListResponse( + val DataObject: List, + val Message: Any, + val ObjectResponse: Any, + val response: ResponseXXXXX +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/StepsCountResponse.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/StepsCountResponse.kt new file mode 100644 index 0000000..b0266d1 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/StepsCountResponse.kt @@ -0,0 +1,5 @@ +package com.nivesh.production.bajajfd.model + +data class StepsCountResponse( + val Response: ResponseXXXX +) \ 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..af2dc2e --- /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: String? = "", + 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..d377c17 --- /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 = "", + var ObjectResponse: ObjectResponse? = null, + var 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 06d5007..8d937e4 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 @@ -1,10 +1,7 @@ package com.nivesh.production.bajajfd.repositories import com.nivesh.production.bajajfd.interfaces.ApiInterface -import com.nivesh.production.bajajfd.model.GetCodeRequest -import com.nivesh.production.bajajfd.model.GetMaturityAmountRequest -import com.nivesh.production.bajajfd.model.GetRatesRequest -import com.nivesh.production.bajajfd.model.PanCheckRequest +import com.nivesh.production.bajajfd.model.* class MainRepository constructor(private val apiInterface: ApiInterface) { suspend fun getRatesResponse(getRatesRequest: GetRatesRequest, token: String) = @@ -12,6 +9,11 @@ class MainRepository constructor(private val apiInterface: ApiInterface) { suspend fun getCodesResponse(requestBody: GetCodeRequest , token: String) = apiInterface.getCodes(requestBody, token) + suspend fun getStepsCountResponse(requestBody: FDStepsCountRequest , token: String) = + apiInterface.getFDStepsCount(requestBody, token) + + suspend fun getClientDetailsResponse(getClientDetails: getClientDetailsRequest , token: String) = + apiInterface.getClientDetails(getClientDetails, token) suspend fun createCalculateFDMaturityAmount(requestBody: GetMaturityAmountRequest, token: String) = apiInterface.getCalculateFDMaturityAmount(requestBody, token) @@ -44,4 +46,26 @@ class MainRepository constructor(private val apiInterface: ApiInterface) { suspend fun panCheck(panCheck: PanCheckRequest, token: String) = apiInterface.panCheckApi(panCheck, token) + suspend fun titleCheck(getCodeRequest: GetCodeRequest, token: String) = + apiInterface.titleApi(getCodeRequest, token) + + suspend fun genderCheck(getCodeRequest: GetCodeRequest, token: String) = + apiInterface.genderApi(getCodeRequest, token) + + suspend fun annualIncomeCheck(getCodeRequest: GetCodeRequest, token: String) = + apiInterface.annualIncomeApi(getCodeRequest, token) + + suspend fun relationShipCheck(getCodeRequest: GetCodeRequest, token: String) = + apiInterface.relationShipApi(getCodeRequest, token) + + suspend fun maritalStatusCheck(getCodeRequest: GetCodeRequest, token: String) = + apiInterface.maritalStatusApi(getCodeRequest, token) + + suspend fun occupationCheck(getCodeRequest: GetCodeRequest, token: String) = + apiInterface.occupationApi(getCodeRequest, token) + + suspend fun stateCheck( token: String) = + apiInterface.stateApi( token) + suspend fun cityCheck(cityRequest: CityRequest, token: String) = + apiInterface.cityApi(cityRequest, 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 517f7ca..02b8634 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 @@ -33,26 +33,22 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { lateinit var stepFourBajajFDViewModel: StepFourBajajFDViewModel lateinit var stepFiveBajajFDViewModel: StepFiveBajajFDViewModel - lateinit var listOfFrequency: List - 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 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() @@ -62,6 +58,23 @@ 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] @@ -71,9 +84,8 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { stepFourBajajFDViewModel = ViewModelProvider(this, StepFourModelProviderFactory(MainRepository(ApiClient.getApiClient)))[StepFourBajajFDViewModel::class.java] stepFiveBajajFDViewModel = ViewModelProvider(this, StepFiveModelProviderFactory(MainRepository(ApiClient.getApiClient)))[StepFiveBajajFDViewModel::class.java] - listOfFrequency = ArrayList() if (Common.isNetworkAvailable(this)) { - getCodeApi() + getStepsCountApi() } binding.imgBack.setOnClickListener { @@ -81,24 +93,22 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { } } - private fun getCodeApi() { - val getCodeRequest = GetCodeRequest() - getCodeRequest.ProductName = getString(R.string.bajajFD) - getCodeRequest.Category = getString(R.string.category) - getCodeRequest.Language = getString(R.string.language) - getCodeRequest.InputValue = "" - viewModel.getCode(getCodeRequest, token) - viewModel.getRatesMutableData.observe(this) { response -> + private fun getStepsCountApi(){ + val fdStepsCount = FDStepsCountRequest() + fdStepsCount.FDProvider = getString(R.string.bajaj) + fdStepsCount.NiveshClientCode = "8872" + viewModel.getStepsCount(fdStepsCount, token) + viewModel.getStepsCountMutableData.observe(this) { response -> when (response) { is Resource.Success -> { Log.e("response", "-->$response") - val getCodeResponse: GetCodeResponse = - Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java) - getCodeResponse.Response.StatusCode.let { code -> + val stepsCountResponse: StepsCountResponse = + Gson().fromJson(response.data?.toString(), StepsCountResponse::class.java) + stepsCountResponse.Response.StatusCode.let { code -> when (code) { 200 -> { - listOfFrequency = getCodeResponse.Response.GetCodesList - setViewPager() + getClientDetailsApi(stepsCountResponse.Response.StepsCount) + // setViewPager(stepsCountResponse.Response.StepsCount) } // 650 -> refreshToken() else -> {} @@ -118,7 +128,63 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { } } - private fun setViewPager() { + private fun getClientDetailsApi(stepsCount: Int) { + if (Common.isNetworkAvailable(this@BajajFdMainActivity)){ + val getClientDetailsRequest = getClientDetailsRequest() + getClientDetailsRequest.client_code = "8872" + getClientDetailsRequest.AppOrWeb = "App" + getClientDetailsRequest.sub_broker_code = "1014" + + 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_model = "" + deviceInfo.device_token = "" + deviceInfo.device_name = "" + deviceInfo.app_version = "2.44.13" + deviceInfo.device_os_version = "Android 11" + 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 setBackground(selectedShape(), defaultShape(), defaultShape(), defaultShape()) @@ -128,7 +194,9 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { val viewPager: ViewPager = binding.viewPager sectionsPagerAdapter.addFragment(StepOneBajajFDFragment.getInstance(this@BajajFdMainActivity)) sectionsPagerAdapter.addFragment(StepTwoBajajFDFragment.getInstance(this@BajajFdMainActivity)) - sectionsPagerAdapter.addFragment(StepThreeBajajFDFragment.getInstance(this@BajajFdMainActivity)) + if (stepsCount == 4) { + sectionsPagerAdapter.addFragment(StepThreeBajajFDFragment.getInstance(this@BajajFdMainActivity)) + } sectionsPagerAdapter.addFragment(StepFourBajajFDFragment.getInstance(this@BajajFdMainActivity)) sectionsPagerAdapter.addFragment(StepFiveBajajFDFragment.getInstance(this@BajajFdMainActivity)) viewPager.adapter = sectionsPagerAdapter 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 a07a592..903ca10 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 @@ -5,9 +5,11 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment +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.ui.activity.BajajFdMainActivity +import com.nivesh.production.bajajfd.util.Common.Companion.showDialogValidation import com.nivesh.production.bajajfd.viewModel.StepFourBajajFDViewModel class StepFourBajajFDFragment : Fragment() { @@ -41,19 +43,46 @@ class StepFourBajajFDFragment : Fragment() { stepFourBajajFDViewModel = (activity as BajajFdMainActivity).stepFourBajajFDViewModel + binding.tvInvestedAmount.text = "" + binding.tvTenure.text = "" + binding.tvInterestPayout.text = "" + binding.tvRateOfInterest.text = "" + + + binding.swDirectorBajajFinance.setOnCheckedChangeListener { _, _ -> + + } + binding.swPromoterBajajFinance.setOnCheckedChangeListener { _, _ -> + + } + binding.swRelativeDirector.setOnCheckedChangeListener { _, _ -> + + } + binding.swShareholder.setOnCheckedChangeListener { _, _ -> + + } + binding.swPoliticallyExposed.setOnCheckedChangeListener { _, _ -> + + } + binding.swCitizen.setOnCheckedChangeListener { _, _ -> + + } + + binding.checkBox.setOnCheckedChangeListener { _, _ -> + + } + binding.btnNext.setOnClickListener { - if (validate()) { + if (binding.checkBox.isChecked) { bajajFDInterface.stepThreeApi("stepThreeResponse") + }else{ + showDialogValidation(activity as BajajFdMainActivity, resources.getString(R.string.validTermsConditions)) } } return root } - private fun validate(): Boolean { - return false - } - 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 c355b21..7387d34 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 @@ -21,9 +21,7 @@ import com.nivesh.production.bajajfd.R import com.nivesh.production.bajajfd.adapter.HorizontalRecyclerViewAdapter import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepOneBinding import com.nivesh.production.bajajfd.interfaces.BajajFDInterface -import com.nivesh.production.bajajfd.model.GetCalculateMaturityAmountResponse -import com.nivesh.production.bajajfd.model.GetMaturityAmountRequest -import com.nivesh.production.bajajfd.model.GetRatesRequest +import com.nivesh.production.bajajfd.model.* import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity import com.nivesh.production.bajajfd.util.Common import com.nivesh.production.bajajfd.util.Common.Companion.commonErrorMethod @@ -32,6 +30,7 @@ import com.nivesh.production.bajajfd.util.Constants.Companion.token import com.nivesh.production.bajajfd.util.Resource import com.nivesh.production.bajajfd.viewModel.StepOneBajajFDViewModel + class StepOneBajajFDFragment : Fragment() { private var _binding: FragmentBajajfdStepOneBinding? = null private val binding get() = _binding!! @@ -41,6 +40,9 @@ class StepOneBajajFDFragment : Fragment() { private lateinit var rgMaturity: RadioButton private lateinit var listOfTenure: MutableList private lateinit var recyclerViewDropDownAdapter: HorizontalRecyclerViewAdapter + private lateinit var listOfMinAmount: List + private lateinit var listOfMaxAmount: List + private lateinit var listOfFrequency: List private var tenure: Int = 0 private var interest: Double = 0.0 @@ -68,31 +70,27 @@ class StepOneBajajFDFragment : Fragment() { binding.edtAmount.filters = arrayOf(InputFilter.LengthFilter(8)) // upto 1 Cr + listOfMinAmount = ArrayList() + listOfMaxAmount = ArrayList() + listOfFrequency = ArrayList() + // Amount binding.edtAmount.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.tlDepositAmount) - if (s.toString().trim().length >= 4 ) { - getRatesApi() + if (s.toString().trim().length >= 4) { maturityAmountApi(tenure, interest) } } }) // Frequency - if ((activity as BajajFdMainActivity).listOfFrequency.isNotEmpty()) { - val adapter = ArrayAdapter( - activity as BajajFdMainActivity, - R.layout.spinner_dropdown, - (activity as BajajFdMainActivity).listOfFrequency - ) - binding.spInterestPayout.setAdapter(adapter) - binding.spInterestPayout.setOnItemClickListener { _, _, position, _ -> - removeError(binding.tlInterestPayout) - binding.tvFrequency.text = - (activity as BajajFdMainActivity).listOfFrequency[position].Value + binding.spInterestPayout.setOnItemClickListener { _, _, position, _ -> + removeError(binding.tlInterestPayout) + if (listOfFrequency.isNotEmpty()) { + binding.tvFrequency.text = listOfFrequency[position].Value if (!binding.tvFrequency.text.equals(getString(R.string.cumulativeText))) { binding.txtCumulativeNon.text = getString(R.string.nonCumulativeROI) } else { @@ -101,18 +99,11 @@ class StepOneBajajFDFragment : Fragment() { if (binding.edtAmount.text.toString().trim().isNotEmpty()) { maturityAmountApi(tenure, interest) - getRatesApi() - } else { - // please enter Amount first - commonErrorMethod( - binding.edtAmount, - binding.tlDepositAmount, - getString(R.string.emptyAmountFirst) - ) } } } + // Tenure binding.spTenure.setOnItemClickListener { _, _, position, _ -> removeError(binding.tlInterestTenure) @@ -121,7 +112,6 @@ class StepOneBajajFDFragment : Fragment() { interest = listOfTenure[position].ROI binding.tvROI.text = interest.toString().plus(" %") maturityAmountApi(tenure, interest) - recyclerViewDropDownAdapter.refresh() } } @@ -158,7 +148,8 @@ class StepOneBajajFDFragment : Fragment() { (activity as BajajFdMainActivity).fdInvestmentDetails.IPAddress = "" (activity as BajajFdMainActivity).fdInvestmentDetails.Device = getString(R.string.app) - (activity as BajajFdMainActivity).fdInvestmentDetails.Source = getString(R.string.source) + (activity as BajajFdMainActivity).fdInvestmentDetails.Source = + getString(R.string.source) if (binding.swSeniorCitizen.isChecked) { (activity as BajajFdMainActivity).fdInvestmentDetails.CitizenType = getString(R.string.seniorCitizen) @@ -169,14 +160,147 @@ class StepOneBajajFDFragment : Fragment() { (activity as BajajFdMainActivity).fdInvestmentDetails.CustomerType = "" (activity as BajajFdMainActivity).fdInvestmentDetails.CKYCNumber = "" + (activity as BajajFdMainActivity).createFDApplicantRequest.FDInvestmentDetails bajajFDInterface.stepOneApi("stepOneResponse") } } - + minAmountApi() + interestPayoutApi() return root } + private fun interestPayoutApi() { + val getCodeRequest = GetCodeRequest() + getCodeRequest.ProductName = getString(R.string.bajajFD) + getCodeRequest.Category = getString(R.string.category) + getCodeRequest.Language = getString(R.string.language) + getCodeRequest.InputValue = "" + stepOneBajajFDViewModel.getCode(getCodeRequest, token) + stepOneBajajFDViewModel.getCodeMutableData.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 -> { + listOfFrequency = getCodeResponse.Response.GetCodesList + if (listOfFrequency.isNotEmpty()) { + val adapter = ArrayAdapter( + activity as BajajFdMainActivity, + R.layout.spinner_dropdown, + listOfFrequency + ) + binding.spInterestPayout.setAdapter(adapter) + binding.spInterestPayout.setText( + adapter.getItem(listOfFrequency.size - 1)?.Value, + false + ) + binding.tvFrequency.text = + adapter.getItem(listOfFrequency.size - 1)?.Value + getRatesApi() + } + } + // 650 -> refreshToken() + else -> {} + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Log.e(" ", "An error occurred:$message") + } + } + is Resource.Loading -> { + + } + } + } + } + + + private fun minAmountApi() { + val getCodeRequest = GetCodeRequest() + getCodeRequest.ProductName = getString(R.string.bajajFD) + getCodeRequest.Category = getString(R.string.minAmountCategory) + getCodeRequest.Language = getString(R.string.language) + getCodeRequest.InputValue = "" + stepOneBajajFDViewModel.getMinAmount(getCodeRequest, token) + stepOneBajajFDViewModel.getMinAmountMutableData.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 -> { + listOfMinAmount = getCodeResponse.Response.GetCodesList + if (listOfMinAmount.isNotEmpty()) { + binding.txtMinAmount.text = getString(R.string.minAmount).plus( + listOfMinAmount[0].Value + ) + } + maxAmountApi() + } + // 650 -> refreshToken() + else -> {} + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Log.e(" ", "An error occurred:$message") + } + } + is Resource.Loading -> { + + } + } + } + } + + private fun maxAmountApi() { + val getCodeRequest = GetCodeRequest() + getCodeRequest.ProductName = getString(R.string.bajajFD) + getCodeRequest.Category = getString(R.string.MaxAmountCategory) + getCodeRequest.Language = getString(R.string.language) + getCodeRequest.InputValue = "" + stepOneBajajFDViewModel.getMaxAmount(getCodeRequest, token) + stepOneBajajFDViewModel.getMaxAmountMutableData.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 -> { + listOfMaxAmount = getCodeResponse.Response.GetCodesList + } + // 650 -> refreshToken() + else -> {} + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Log.e(" ", "An error occurred:$message") + } + } + is Resource.Loading -> { + + } + } + } + } + + private fun setUpRecyclerView() { recyclerViewDropDownAdapter = HorizontalRecyclerViewAdapter( @@ -199,7 +323,7 @@ class StepOneBajajFDFragment : Fragment() { private fun maturityAmountApi(tenure: Int, interest: Double) { if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { - if (binding.edtAmount.text.toString().length >= 4 && interest != 0.0 && tenure != 0) { + if (binding.edtAmount.text.toString().length >= 4 && interest != 0.0 && tenure != 0) { val maturityAmountRequest = GetMaturityAmountRequest() maturityAmountRequest.FDProvider = getString(R.string.bajaj) maturityAmountRequest.FDAmount = binding.edtAmount.text.toString().toInt() @@ -218,9 +342,10 @@ class StepOneBajajFDFragment : Fragment() { getMaturityAmountResponse.Response.StatusCode.let { code -> when (code) { 200 -> { - binding.tvMaturityAmount.text = getString(R.string.rs).plus( - getMaturityAmountResponse.Response.MaturityAmount.toString() - ) + binding.tvMaturityAmount.text = + getString(R.string.rs).plus(" ").plus( + getMaturityAmountResponse.Response.MaturityAmount.toString() + ) } // 650 -> refreshToken() else -> { @@ -252,20 +377,23 @@ class StepOneBajajFDFragment : Fragment() { binding.tlDepositAmount, getString(R.string.emptyAmount) ) - } else if (binding.edtAmount.text.toString().toDouble() < 5000) { + } else if (binding.edtAmount.text.toString() + .toDouble() < listOfMinAmount[0].Value.toDouble() + ) { commonErrorMethod( binding.edtAmount, binding.tlDepositAmount, getString(R.string.validMinAmount) ) - } else if (binding.edtAmount.text.toString().toDouble() > 50000000) { + } else if (binding.edtAmount.text.toString() + .toDouble() > listOfMaxAmount[0].Value.toDouble() + ) { commonErrorMethod( binding.edtAmount, binding.tlDepositAmount, getString(R.string.validMaxAmount) ) - } - else if (binding.spInterestPayout.text.isEmpty()) { + } else if (binding.spInterestPayout.text.isEmpty()) { Common.commonSpinnerErrorMethod( binding.spInterestPayout, binding.tlInterestPayout, @@ -320,6 +448,16 @@ class StepOneBajajFDFragment : Fragment() { listOfTenure ) binding.spTenure.setAdapter(tenureAdapter) + + binding.spTenure.setText( + tenureAdapter.getItem(0)?.Tenure.plus( + " Months | " + ).plus(tenureAdapter.getItem(0)?.ROI).plus(" %"), false + ) + tenure = tenureAdapter.getItem(0)?.Tenure.toString().toInt() + interest = tenureAdapter.getItem(0)?.ROI ?: 0.0 + binding.tvROI.text = + tenureAdapter.getItem(0)?.ROI.toString().plus(" %") setUpRecyclerView() } else { binding.ORLayout.visibility = View.GONE 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 e30ff9e..2778460 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt @@ -1,5 +1,6 @@ package com.nivesh.production.bajajfd.ui.fragment +import android.app.DatePickerDialog import android.os.Bundle import android.text.Editable import android.text.InputFilter @@ -13,16 +14,17 @@ import android.widget.ArrayAdapter import android.widget.RadioButton import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment +import com.google.android.material.textfield.TextInputEditText import com.google.gson.Gson import com.nivesh.production.bajajfd.R import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepTwoBinding import com.nivesh.production.bajajfd.interfaces.BajajFDInterface -import com.nivesh.production.bajajfd.model.PanCheckRequest -import com.nivesh.production.bajajfd.model.PanCheckResponse +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.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 @@ -31,14 +33,28 @@ 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() { + private var _binding: FragmentBajajfdStepTwoBinding? = null private val binding get() = _binding!! + 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 + private lateinit var listOfAnnualIncome: List + private lateinit var listOfRelationShip: List + private lateinit var listOfMaritalStatus: List + private lateinit var listOfOccupation: List + private lateinit var listOfStates: List + private lateinit var listOfCities: List + private lateinit var stepTwoBajajFDViewModel: StepTwoBajajFDViewModel companion object { @@ -62,7 +78,13 @@ class StepTwoBajajFDFragment : Fragment() { val root = binding.root stepTwoBajajFDViewModel = (activity as BajajFdMainActivity).stepTwoBajajFDViewModel - + listOfTitle = ArrayList() + listOfGender = ArrayList() + listOfAnnualIncome = ArrayList() + listOfRelationShip = ArrayList() + listOfMaritalStatus = ArrayList() + listOfOccupation = ArrayList() + listOfStates = ArrayList() // Personal Details binding.edtMobileNumber.filters = arrayOf(LengthFilter(10)) binding.edtPANNumber.filters = arrayOf(LengthFilter(10)) @@ -81,10 +103,17 @@ class StepTwoBajajFDFragment : Fragment() { removeError(binding.tlMobileNumber) } }) + binding.edtMobileNumber.setText((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.mobile) + + // create an OnDateSetListener + binding.edtDOB.setText((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_DOB) 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?) { @@ -101,18 +130,15 @@ class StepTwoBajajFDFragment : Fragment() { } }) - val titleAdapter = ArrayAdapter( - activity as BajajFdMainActivity, - R.layout.spinner_dropdown, - resources.getStringArray( - R.array.title - ) - ) - binding.spTitle.setAdapter(titleAdapter) binding.spTitle.setOnItemClickListener { _, _, _, _ -> removeError(binding.tlTitle) } + val splitStringName = + (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_APPNAME1?.split( + "\\s".toRegex() + )?.toTypedArray() + binding.edtFirstName.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { @@ -125,6 +151,8 @@ class StepTwoBajajFDFragment : Fragment() { removeError(binding.tlFirstName) } }) + binding.edtFirstName.setText(splitStringName?.get(0).toString()) + binding.edtMiddleName.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { @@ -137,6 +165,8 @@ class StepTwoBajajFDFragment : Fragment() { removeError(binding.tlMiddleName) } }) + binding.edtMiddleName.setText(splitStringName?.get(1).toString()) + binding.edtLastName.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { @@ -149,15 +179,8 @@ class StepTwoBajajFDFragment : Fragment() { removeError(binding.tlLastName) } }) + binding.edtLastName.setText(splitStringName?.get(2).toString()) - val genderAdapter = ArrayAdapter( - activity as BajajFdMainActivity, - R.layout.spinner_dropdown, - resources.getStringArray( - R.array.gender - ) - ) - binding.spGender.setAdapter(genderAdapter) binding.spGender.setOnItemClickListener { _, _, _, _ -> removeError(binding.tlGender) } @@ -174,18 +197,12 @@ class StepTwoBajajFDFragment : Fragment() { removeError(binding.tlEmail) } }) - binding.edtOccupation.addTextChangedListener(object : TextWatcher { + binding.edtEmail.setText((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_EMAIL) - override fun afterTextChanged(s: Editable?) { - } - - override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { - } + binding.spOccupation.setOnItemClickListener { _, _, _, _ -> + removeError(binding.tlOccupation) + } - override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { - removeError(binding.tlOccupation) - } - }) binding.edtQualification.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { @@ -199,26 +216,10 @@ class StepTwoBajajFDFragment : Fragment() { } }) - val maritalAdapter = ArrayAdapter( - activity as BajajFdMainActivity, - R.layout.spinner_dropdown, - resources.getStringArray( - R.array.maritalStatus - ) - ) - binding.spMarital.setAdapter(maritalAdapter) binding.spMarital.setOnItemClickListener { _, _, _, _ -> removeError(binding.tlMarital) } - val relationShipAdapter = ArrayAdapter( - activity as BajajFdMainActivity, - R.layout.spinner_dropdown, - resources.getStringArray( - R.array.maritalStatus - ) - ) - binding.spRelation.setAdapter(relationShipAdapter) binding.spRelation.setOnItemClickListener { _, _, _, _ -> removeError(binding.tlRelation) } @@ -235,6 +236,7 @@ class StepTwoBajajFDFragment : Fragment() { removeError(binding.tlRelationName) } }) + binding.edtAddressLine1.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { @@ -259,7 +261,7 @@ class StepTwoBajajFDFragment : Fragment() { removeError(binding.tlAddressLine2) } }) - binding.edtState.addTextChangedListener(object : TextWatcher { + binding.edtAddressLine3.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { } @@ -268,21 +270,16 @@ class StepTwoBajajFDFragment : Fragment() { } override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { - removeError(binding.tlState) + removeError(binding.tlAddressLine3) } }) - binding.edtCity.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.tlCity) - } - }) + binding.spState.setOnItemClickListener { _, _, _, _ -> + removeError(binding.tlState) + } + binding.spCity.setOnItemClickListener { _, _, _, _ -> + removeError(binding.tlCity) + } binding.edtPinCode.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { @@ -297,11 +294,9 @@ class StepTwoBajajFDFragment : Fragment() { }) // Nominee Details - binding.spNomineeTitle.setAdapter(titleAdapter) binding.spNomineeTitle.setOnItemClickListener { _, _, _, _ -> binding.tlNomineeTitle.error = null } - binding.edtNomineeFirstName.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { @@ -338,12 +333,10 @@ class StepTwoBajajFDFragment : Fragment() { removeError(binding.tlNomineeLastName) } }) - binding.edtNomineeDOB.setOnClickListener { removeError(binding.tlNomineeDOB) + datePicker(binding.edtNomineeDOB) } - - binding.spNomineeRelation.setAdapter(relationShipAdapter) binding.spNomineeRelation.setOnItemClickListener { _, _, _, _ -> removeError(binding.tlNomineeRelation) } @@ -377,12 +370,9 @@ class StepTwoBajajFDFragment : Fragment() { removeError(binding.tlGuardianAge) } }) - - binding.spGuardianRelation.setAdapter(relationShipAdapter) binding.spGuardianRelation.setOnItemClickListener { _, _, _, _ -> removeError(binding.tlGuardianRelation) } - binding.edtGuardianAddress.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { @@ -477,7 +467,6 @@ class StepTwoBajajFDFragment : Fragment() { binding.llPersonalDetail.visibility = View.VISIBLE } } - binding.tvNomineeDetails.setOnClickListener { if (binding.llNomineeDetail.visibility == View.VISIBLE) { binding.llNomineeDetail.visibility = View.GONE @@ -485,7 +474,6 @@ class StepTwoBajajFDFragment : Fragment() { binding.llNomineeDetail.visibility = View.VISIBLE } } - binding.tvBankDetails.setOnClickListener { if (binding.llBankDetails.visibility == View.VISIBLE) { binding.llBankDetails.visibility = View.GONE @@ -494,6 +482,7 @@ class StepTwoBajajFDFragment : Fragment() { } } + titleApi() binding.btnNext.setOnClickListener { if (validation()) { // Applicant Details @@ -514,7 +503,7 @@ class StepTwoBajajFDFragment : Fragment() { (activity as BajajFdMainActivity).applicantDetails.ApplicantMobile = binding.edtMobileNumber.text.toString() (activity as BajajFdMainActivity).applicantDetails.ApplicantOccupation = - binding.edtOccupation.text.toString() + binding.spOccupation.text.toString() (activity as BajajFdMainActivity).applicantDetails.ApplicantQualification = binding.edtQualification.text.toString() (activity as BajajFdMainActivity).applicantDetails.ApplicantMaritalStatus = @@ -525,11 +514,12 @@ class StepTwoBajajFDFragment : Fragment() { binding.edtAddressLine1.text.toString() (activity as BajajFdMainActivity).applicantDetails.ApplicantAddress2 = binding.edtAddressLine2.text.toString() - (activity as BajajFdMainActivity).applicantDetails.ApplicantAddress3 = "" + (activity as BajajFdMainActivity).applicantDetails.ApplicantAddress3 = + binding.edtAddressLine3.text.toString() (activity as BajajFdMainActivity).applicantDetails.ApplicantCity = - binding.edtCity.text.toString() + binding.spCity.text.toString() (activity as BajajFdMainActivity).applicantDetails.ApplicantState = - binding.edtState.text.toString() + binding.spState.text.toString() (activity as BajajFdMainActivity).applicantDetails.ApplicantCountry = "India" (activity as BajajFdMainActivity).applicantDetails.ApplicantPincode = binding.edtPinCode.text.toString().toInt() @@ -601,6 +591,16 @@ class StepTwoBajajFDFragment : Fragment() { (activity as BajajFdMainActivity).fdBankDetails.PaymentMode = rbPaymentMode.text.toString() + (activity as BajajFdMainActivity).createFDApplicantRequest.ApplicantDetails + (activity as BajajFdMainActivity).createFDApplicantRequest.ApplicantRelationDetails + (activity as BajajFdMainActivity).createFDApplicantRequest.FdBankDetails + (activity as BajajFdMainActivity).createFDApplicantRequest.NomineeDetails + (activity as BajajFdMainActivity).createFDApplicantRequest.NomineeGuardianDetails + + Log.e( + "CreateFDRequest", + "-->" + Gson().toJson((activity as BajajFdMainActivity).createFDApplicantRequest) + ) bajajFDInterface.stepTwoApi("stepTwoResponse") } } @@ -608,9 +608,30 @@ class StepTwoBajajFDFragment : Fragment() { binding.btnBack.setOnClickListener { (activity as BajajFdMainActivity).binding.viewPager.currentItem = 0 } + return root } + private fun datePicker(edtDOB: TextInputEditText) { + val year = cal.get(Calendar.YEAR) + val month = cal.get(Calendar.MONTH) + val day = cal.get(Calendar.DAY_OF_MONTH) + val datePickerDialog = DatePickerDialog( + activity as BajajFdMainActivity, { _, year, monthOfYear, dayOfMonth -> + if (monthOfYear.toString().length == 1) { + "0".plus(monthOfYear) + } + edtDOB.setText(getDate(dayOfMonth.toString() + "-" + (monthOfYear + 1) + "-" + year)) + }, 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() @@ -670,6 +691,456 @@ class StepTwoBajajFDFragment : Fragment() { } + private fun titleApi() { + if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { + val getCodeRequest = GetCodeRequest() + getCodeRequest.ProductName = getString(R.string.bajajFD) + getCodeRequest.Category = getString(R.string.salutationCategory) + getCodeRequest.Language = getString(R.string.language) + getCodeRequest.InputValue = "" + stepTwoBajajFDViewModel.titleApi(getCodeRequest, token) + stepTwoBajajFDViewModel.getTitleMutableData.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 -> { + listOfTitle = getCodeResponse.Response.GetCodesList + if (listOfTitle.isNotEmpty()) { + val adapter = ArrayAdapter( + activity as BajajFdMainActivity, + R.layout.spinner_dropdown, + listOfTitle + ) + binding.spTitle.setAdapter(adapter) + + if ((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.Client_Title.isNullOrEmpty()) { + binding.spTitle.setText( + adapter.getItem(0)?.Value, + false + ) + } else { + listOfTitle.filter { + it.Value == (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.Client_Title + } + } + + binding.spNomineeTitle.setAdapter(adapter) + binding.spNomineeTitle.setText( + adapter.getItem(0)?.Value, + false + ) + } + genderApi() + relationShipApi() + maritalStatusApi() + occupationApi() + annualIncomeApi() + stateListApi() + + } + // 650 -> refreshToken() + else -> {} + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Log.e(" ", "An error occurred:$message") + } + } + is Resource.Loading -> { + + } + } + } + + } + } + + private fun genderApi() { + 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 = "" + stepTwoBajajFDViewModel.genderApi(getCodeRequest, token) + stepTwoBajajFDViewModel.getGenderMutableData.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 -> { + listOfGender = getCodeResponse.Response.GetCodesList + if (listOfGender.isNotEmpty()) { + val adapter = ArrayAdapter( + activity as BajajFdMainActivity, + R.layout.spinner_dropdown, + listOfGender + ) + binding.spGender.setAdapter(adapter) + binding.spGender.setText( + adapter.getItem(0)?.Value, + false + ) + } + } + // 650 -> refreshToken() + else -> {} + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Log.e(" ", "An error occurred:$message") + } + } + is Resource.Loading -> { + + } + } + } + + } + + } + + private fun relationShipApi() { + if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { + val getCodeRequest = GetCodeRequest() + getCodeRequest.ProductName = getString(R.string.bajajFD) + getCodeRequest.Category = getString(R.string.relationshipCategory) + getCodeRequest.Language = getString(R.string.language) + getCodeRequest.InputValue = "" + stepTwoBajajFDViewModel.relationShipApi(getCodeRequest, token) + stepTwoBajajFDViewModel.getRelationShipMutableData.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 -> { + listOfRelationShip = getCodeResponse.Response.GetCodesList + if (listOfGender.isNotEmpty()) { + val adapter = ArrayAdapter( + activity as BajajFdMainActivity, + R.layout.spinner_dropdown, + listOfRelationShip + ) + binding.spRelation.setAdapter(adapter) + binding.spRelation.setText( + adapter.getItem(0)?.Value, + false + ) + + binding.spNomineeRelation.setAdapter(adapter) + binding.spNomineeRelation.setText( + adapter.getItem(0)?.Value, + false + ) + + binding.spGuardianRelation.setAdapter(adapter) + binding.spGuardianRelation.setText( + adapter.getItem(0)?.Value, + false + ) + } + } + // 650 -> refreshToken() + else -> {} + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Log.e(" ", "An error occurred:$message") + } + } + is Resource.Loading -> { + + } + } + } + + } + + } + + private fun maritalStatusApi() { + if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { + val getCodeRequest = GetCodeRequest() + getCodeRequest.ProductName = getString(R.string.bajajFD) + getCodeRequest.Category = getString(R.string.maritalCategory) + getCodeRequest.Language = getString(R.string.language) + getCodeRequest.InputValue = "" + stepTwoBajajFDViewModel.maritalStatusApi(getCodeRequest, token) + stepTwoBajajFDViewModel.getMaritalStatusMutableData.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 -> { + listOfMaritalStatus = getCodeResponse.Response.GetCodesList + if (listOfMaritalStatus.isNotEmpty()) { + val adapter = ArrayAdapter( + activity as BajajFdMainActivity, + R.layout.spinner_dropdown, + listOfMaritalStatus + ) + binding.spMarital.setAdapter(adapter) + binding.spMarital.setText( + adapter.getItem(0)?.Value, + false + ) + } + } + // 650 -> refreshToken() + else -> {} + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Log.e(" ", "An error occurred:$message") + } + } + is Resource.Loading -> { + + } + } + } + + } + + } + + private fun occupationApi() { + if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { + val getCodeRequest = GetCodeRequest() + getCodeRequest.ProductName = getString(R.string.bajajFD) + getCodeRequest.Category = getString(R.string.occupationCategory) + getCodeRequest.Language = getString(R.string.language) + getCodeRequest.InputValue = "" + stepTwoBajajFDViewModel.occupationApi(getCodeRequest, token) + stepTwoBajajFDViewModel.getOccupationMutableData.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 -> { + listOfOccupation = getCodeResponse.Response.GetCodesList + if (listOfOccupation.isNotEmpty()) { + val adapter = ArrayAdapter( + activity as BajajFdMainActivity, + R.layout.spinner_dropdown, + listOfOccupation + ) + binding.spOccupation.setAdapter(adapter) + binding.spOccupation.setText( + adapter.getItem(0)?.Value, + false + ) + } + } + // 650 -> refreshToken() + else -> {} + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Log.e(" ", "An error occurred:$message") + } + } + is Resource.Loading -> { + + } + } + } + + } + + } + + private fun annualIncomeApi() { + if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { + val getCodeRequest = GetCodeRequest() + getCodeRequest.ProductName = getString(R.string.bajajFD) + getCodeRequest.Category = getString(R.string.annualIncome) + getCodeRequest.Language = getString(R.string.language) + getCodeRequest.InputValue = "" + stepTwoBajajFDViewModel.annualIncomeApi(getCodeRequest, token) + stepTwoBajajFDViewModel.getAnnualIncomeMutableData.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 -> { + listOfAnnualIncome = getCodeResponse.Response.GetCodesList + if (listOfAnnualIncome.isNotEmpty()) { + val adapter = ArrayAdapter( + activity as BajajFdMainActivity, + R.layout.spinner_dropdown, + listOfAnnualIncome + ) + binding.spIncome.setAdapter(adapter) + binding.spIncome.setText( + adapter.getItem(0)?.Value, + false + ) + } + } + // 650 -> refreshToken() + else -> {} + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Log.e(" ", "An error occurred:$message") + } + } + is Resource.Loading -> { + + } + } + } + + } + + } + + private fun stateListApi() { + if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { + stepTwoBajajFDViewModel.stateApi(token) + stepTwoBajajFDViewModel.getStateMasterMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + Log.e("response", "-->$response") + val stateListResponse: StateListResponse = + Gson().fromJson( + response.data?.toString(), + StateListResponse::class.java + ) + stateListResponse.response.status_code.let { code -> + when (code) { + 200 -> { + listOfStates = stateListResponse.DataObject + if (listOfStates.isNotEmpty()) { + val adapter = ArrayAdapter( + activity as BajajFdMainActivity, + R.layout.spinner_dropdown, + listOfStates + ) + binding.spState.setAdapter(adapter) + binding.spState.setText( + adapter.getItem(0)?.State_Name, + false + ) + cityListApi(adapter.getItem(0)?.State_Id) + } + } + // 650 -> refreshToken() + else -> {} + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Log.e(" ", "An error occurred:$message") + } + } + is Resource.Loading -> { + + } + } + } + + } + } + + private fun cityListApi(stateCode: Int?) { + + val cityRequest = CityRequest() + cityRequest.StateCode = stateCode + cityRequest.Type = "" + cityRequest.ClientCode = "8872" + cityRequest.RoleID = 5 + cityRequest.APIName = "" + cityRequest.UID = 19060 + cityRequest.Subbroker_Code = "1014" + cityRequest.RMCode = "" + cityRequest.HOCode = "" + cityRequest.Source = "Nivesh" + cityRequest.APP_Web = "App" + stepTwoBajajFDViewModel.cityListApi(cityRequest, token) + stepTwoBajajFDViewModel.getCityListMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + Log.e("response", "-->$response") + val cityListResponse: CityListResponse = + Gson().fromJson(response.data?.toString(), CityListResponse::class.java) + cityListResponse.response.status_code.let { code -> + when (code) { + 200 -> { + listOfCities = cityListResponse.DataObject + if (listOfCities.isNotEmpty()) { + val adapter = ArrayAdapter( + activity as BajajFdMainActivity, + R.layout.spinner_dropdown, + listOfCities + ) + binding.spCity.setAdapter(adapter) + binding.spCity.setText( + adapter.getItem(0)?.city_name, + false + ) + } + } + // 650 -> refreshToken() + else -> {} + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Log.e(" ", "An error occurred:$message") + } + } + is Resource.Loading -> { + + } + } + } + } + + // validations private fun validation(): Boolean { return if (binding.edtMobileNumber.text.toString().isEmpty()) { // EditText @@ -678,17 +1149,17 @@ class StepTwoBajajFDFragment : Fragment() { binding.tlMobileNumber, getString(R.string.emptyMobileNumber) ) - } else if (binding.edtMobileNumber.text?.length != 10) { // EditText + } else if (!isIndianMobileNo(binding.edtMobileNumber.text.toString())) { // EditText commonErrorMethod( binding.edtMobileNumber, binding.tlMobileNumber, - getString(R.string.inValidMobileNumber) + getString(R.string.inValidIndianMobileNumber) ) - } else if (!isIndianMobileNo(binding.edtMobileNumber.text.toString())) { // EditText + } else if (binding.edtMobileNumber.text?.length != 10) { // EditText commonErrorMethod( binding.edtMobileNumber, binding.tlMobileNumber, - getString(R.string.inValidIndianMobileNumber) + getString(R.string.inValidMobileNumber) ) } else if (binding.edtDOB.text.toString().isEmpty()) { // EditText commonErrorMethod(binding.edtDOB, binding.tlDOB, getString(R.string.emptyDOB)) @@ -698,7 +1169,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, @@ -716,7 +1187,7 @@ class StepTwoBajajFDFragment : Fragment() { 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, @@ -728,7 +1199,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, @@ -740,7 +1211,7 @@ 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, @@ -756,9 +1227,9 @@ class StepTwoBajajFDFragment : Fragment() { 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.edtOccupation.text.toString().isEmpty()) { // EditText - commonErrorMethod( - binding.edtOccupation, + } else if (binding.spOccupation.text.toString().isEmpty()) { // EditText + commonSpinnerErrorMethod( + binding.spOccupation, binding.tlOccupation, getString(R.string.emptyOccupation) ) @@ -798,10 +1269,20 @@ class StepTwoBajajFDFragment : Fragment() { binding.tlAddressLine2, getString(R.string.emptyAddressLine2) ) - } else if (binding.edtState.text.toString().isEmpty()) { // EditText - commonErrorMethod(binding.edtState, binding.tlState, getString(R.string.emptyState)) - } else if (binding.edtCity.text.toString().isEmpty()) { // EditText - commonErrorMethod(binding.edtCity, binding.tlCity, getString(R.string.emptyCity)) + } 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) + ) + } 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 commonErrorMethod( binding.edtPinCode, @@ -845,4 +1326,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 4d665fa..1c91da4 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,8 +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.ui.activity.BajajFdMainActivity +import com.nivesh.production.bajajfd.R +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 @@ -91,14 +95,19 @@ class Common { fun removeError(textInputLayout: TextInputLayout) { if (textInputLayout.error != null) { textInputLayout.error = null + if(textInputLayout.isErrorEnabled){ + textInputLayout.isErrorEnabled = false; + } } } fun showDialogValidation(activity: Activity?, message: CharSequence?) { val builder = AlertDialog.Builder(activity) builder.setMessage(message) - builder.setPositiveButton("OK") { dialogInterface, _ -> - dialogInterface.dismiss() + if (activity != null) { + builder.setPositiveButton(activity.getString(R.string.ok)) { dialogInterface, _ -> + dialogInterface.dismiss() + } } builder.show() } @@ -106,11 +115,13 @@ class Common { fun showDialogWithTwoButtons(activity: Activity?, message: CharSequence?) { val builder = AlertDialog.Builder(activity) builder.setMessage(message) - builder.setPositiveButton("OK") { dialogInterface, _ -> - dialogInterface.dismiss() - } - builder.setNegativeButton("Cancel") { dialogInterface, _ -> - dialogInterface.dismiss() + if (activity != null) { + builder.setPositiveButton(activity.getString(R.string.ok)) { dialogInterface, _ -> + dialogInterface.dismiss() + } + builder.setNegativeButton(activity.getString(R.string.cancel)) { dialogInterface, _ -> + dialogInterface.dismiss() + } } builder.show() } @@ -139,7 +150,7 @@ class Common { strMessage: String ): Boolean { inputText.requestFocus() - inputError.error = strMessage + inputError.error = strMessage return false } @@ -153,5 +164,11 @@ 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) + return simpleDateFormat.format(mDate as Date) + } } } \ 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 d0d622a..cb5bdb7 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 @@ -4,7 +4,9 @@ import androidx.lifecycle.MutableLiveData 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 @@ -20,6 +22,22 @@ class BajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() getRatesMutableData.postValue(handleRatesResponse(response)) } + val getStepsCountMutableData: MutableLiveData> = MutableLiveData() + 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 { if (response.isSuccessful) { response.body()?.let { resultResponse -> diff --git a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepOneBajajFDViewModel.kt b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepOneBajajFDViewModel.kt index 29eca04..56f311d 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepOneBajajFDViewModel.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepOneBajajFDViewModel.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.GetMaturityAmountRequest import com.nivesh.production.bajajfd.model.GetRatesRequest import com.nivesh.production.bajajfd.repositories.MainRepository @@ -13,21 +14,43 @@ import kotlinx.coroutines.launch class StepOneBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() { // TODO: Implement the ViewModel - val getRatesMutableData: MutableLiveData> = MutableLiveData() - val getMaturityAmountMutableData: MutableLiveData> = MutableLiveData() + val getCodeMutableData: MutableLiveData> = MutableLiveData() + + fun getCode(requestBody: GetCodeRequest, token : String) = viewModelScope.launch { + getCodeMutableData.postValue(Resource.Loading()) + val response = mainRepository.getCodesResponse(requestBody, token) + getCodeMutableData.postValue(handleRatesResponse(response)) + } + + val getRatesMutableData: MutableLiveData> = MutableLiveData() fun getRates(getRatesRequest: GetRatesRequest, token: String) = viewModelScope.launch { getRatesMutableData.postValue(Resource.Loading()) val response = mainRepository.getRatesResponse(getRatesRequest, token) getRatesMutableData.postValue(handleRatesResponse(response)) } + val getMaturityAmountMutableData: MutableLiveData> = MutableLiveData() fun getMaturityAmount(requestBody: GetMaturityAmountRequest) = viewModelScope.launch { getMaturityAmountMutableData.postValue(Resource.Loading()) val response = mainRepository.createCalculateFDMaturityAmount(requestBody, token) getMaturityAmountMutableData.postValue(handleRatesResponse(response)) } + val getMinAmountMutableData: MutableLiveData> = MutableLiveData() + fun getMinAmount(requestBody: GetCodeRequest, token : String) = viewModelScope.launch { + getMinAmountMutableData.postValue(Resource.Loading()) + val response = mainRepository.getCodesResponse(requestBody, token) + getMinAmountMutableData.postValue(handleRatesResponse(response)) + } + + val getMaxAmountMutableData: MutableLiveData> = MutableLiveData() + fun getMaxAmount(requestBody: GetCodeRequest, token : String) = viewModelScope.launch { + getMaxAmountMutableData.postValue(Resource.Loading()) + val response = mainRepository.getCodesResponse(requestBody, token) + getMaxAmountMutableData.postValue(handleRatesResponse(response)) + } + private fun handleRatesResponse(response: retrofit2.Response): Resource { if (response.isSuccessful) { response.body()?.let { resultResponse -> 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 0719aaa..185838e 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 @@ -4,6 +4,8 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.google.gson.JsonObject +import com.nivesh.production.bajajfd.model.CityRequest +import com.nivesh.production.bajajfd.model.GetCodeRequest import com.nivesh.production.bajajfd.model.GetRatesRequest import com.nivesh.production.bajajfd.model.PanCheckRequest import com.nivesh.production.bajajfd.repositories.MainRepository @@ -45,4 +47,61 @@ class StepTwoBajajFDViewModel(private val mainRepository: MainRepository) : View getPanCheckMutableData.postValue(handleRatesResponse(response)) } + val getTitleMutableData: MutableLiveData> = MutableLiveData() + fun titleApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch { + getTitleMutableData.postValue(Resource.Loading()) + val response = mainRepository.titleCheck(getCodeRequest, token) + getTitleMutableData.postValue(handleRatesResponse(response)) + } + + val getGenderMutableData: MutableLiveData> = MutableLiveData() + fun genderApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch { + getGenderMutableData.postValue(Resource.Loading()) + val response = mainRepository.genderCheck(getCodeRequest, token) + getGenderMutableData.postValue(handleRatesResponse(response)) + } + + val getAnnualIncomeMutableData: MutableLiveData> = MutableLiveData() + fun annualIncomeApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch { + getAnnualIncomeMutableData.postValue(Resource.Loading()) + val response = mainRepository.annualIncomeCheck(getCodeRequest, token) + getAnnualIncomeMutableData.postValue(handleRatesResponse(response)) + } + + val getRelationShipMutableData: MutableLiveData> = MutableLiveData() + fun relationShipApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch { + getRelationShipMutableData.postValue(Resource.Loading()) + val response = mainRepository.relationShipCheck(getCodeRequest, token) + getRelationShipMutableData.postValue(handleRatesResponse(response)) + } + + val getMaritalStatusMutableData: MutableLiveData> = MutableLiveData() + fun maritalStatusApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch { + getMaritalStatusMutableData.postValue(Resource.Loading()) + val response = mainRepository.maritalStatusCheck(getCodeRequest, token) + getMaritalStatusMutableData.postValue(handleRatesResponse(response)) + } + + val getOccupationMutableData: MutableLiveData> = MutableLiveData() + fun occupationApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch { + getOccupationMutableData.postValue(Resource.Loading()) + val response = mainRepository.occupationCheck(getCodeRequest, token) + getOccupationMutableData.postValue(handleRatesResponse(response)) + } + + + val getStateMasterMutableData: MutableLiveData> = MutableLiveData() + fun stateApi(token: String) = viewModelScope.launch { + getStateMasterMutableData.postValue(Resource.Loading()) + val response = mainRepository.stateCheck( token) + getStateMasterMutableData.postValue(handleRatesResponse(response)) + } + + val getCityListMutableData: MutableLiveData> = MutableLiveData() + fun cityListApi(cityRequest: CityRequest, token: String) = viewModelScope.launch { + getCityListMutableData.postValue(Resource.Loading()) + val response = mainRepository.cityCheck(cityRequest, token) + getCityListMutableData.postValue(handleRatesResponse(response)) + } + } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_bajajfd_step_five.xml b/app/src/main/res/layout/fragment_bajajfd_step_five.xml index 4fe62f0..56ca8b1 100644 --- a/app/src/main/res/layout/fragment_bajajfd_step_five.xml +++ b/app/src/main/res/layout/fragment_bajajfd_step_five.xml @@ -12,7 +12,8 @@ android:id="@+id/linearLayoutTwo" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_marginBottom="@dimen/margin_70" + android:layout_marginBottom="@dimen/margin_80" + android:padding="@dimen/margin_5" android:background="@color/NiveshColorAppBg" android:fillViewport="true" android:orientation="vertical" @@ -26,7 +27,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:foreground="?android:attr/selectableItemBackground" - android:padding="@dimen/margin_10" app:cardElevation="@dimen/margin_1" app:cardUseCompatPadding="true" app:layout_constraintEnd_toEndOf="parent" @@ -35,24 +35,22 @@ + android:layout_height="match_parent"> + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toBottomOf="@+id/logo" /> diff --git a/app/src/main/res/layout/fragment_bajajfd_step_four.xml b/app/src/main/res/layout/fragment_bajajfd_step_four.xml index 520da76..22a13de 100644 --- a/app/src/main/res/layout/fragment_bajajfd_step_four.xml +++ b/app/src/main/res/layout/fragment_bajajfd_step_four.xml @@ -12,9 +12,10 @@ android:id="@+id/scrollView" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_marginBottom="70dp" + android:layout_marginBottom="@dimen/margin_100" android:background="@color/NiveshColorAppBg" android:fillViewport="true" + android:padding="@dimen/margin_5" app:layout_constraintBottom_toTopOf="@+id/btnNext" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -25,7 +26,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:foreground="?android:attr/selectableItemBackground" - android:padding="@dimen/margin_10" app:cardElevation="1dp" app:cardUseCompatPadding="true" app:layout_constraintEnd_toEndOf="parent" @@ -41,12 +41,11 @@ android:id="@+id/logo" android:layout_width="@dimen/margin_150" android:layout_height="@dimen/margin_18" + android:layout_marginStart="@dimen/margin_15" android:layout_marginTop="@dimen/margin_15" android:contentDescription="@string/contentDescription" android:src="@drawable/bajaj_logo" - app:layout_constraintHorizontal_bias="0.065" - app:layout_constraintLeft_toLeftOf="parent" - app:layout_constraintRight_toRightOf="parent" + app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -309,12 +306,24 @@ + + + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/tvOnceClick" /> + app:layout_constraintStart_toEndOf="@+id/btnBack" + app:layout_constraintTop_toBottomOf="@+id/tvOnceClick" /> - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_bajajfd_step_one.xml b/app/src/main/res/layout/fragment_bajajfd_step_one.xml index 26be7dd..7d1b421 100644 --- a/app/src/main/res/layout/fragment_bajajfd_step_one.xml +++ b/app/src/main/res/layout/fragment_bajajfd_step_one.xml @@ -5,365 +5,288 @@ android:id="@+id/constraintLayout" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/greyColor4" + android:layout_gravity="center_vertical" + android:background="@color/NiveshColorAppBg" tool:context=".ui.fragment.StepTwoBajajFDFragment"> - - + android:foreground="?android:attr/selectableItemBackground" + app:cardElevation="@dimen/margin_1" + app:cardUseCompatPadding="true"> - + android:orientation="vertical" + android:paddingTop="@dimen/margin_10"> + + + + + android:orientation="vertical" + android:padding="@dimen/margin_10"> - - - + android:layout_margin="@dimen/margin_5" + android:hint="@string/investmentAmount"> - - - - - - - + android:drawableStart="@drawable/svg_rs" + android:inputType="number" + android:maxLength="12" + android:textColorHint="@color/greyColor2" + android:textSize="@dimen/text_size_14" /> - - - - - - - - - - - + - + + - - + tool:ignore="DuplicateSpeakableTextCheck,LabelFor,TextContrastCheck" /> + + - - - - - - - + android:padding="@dimen/margin_10" + android:background="@drawable/rounded_corner_with_line" + android:hint="@string/selectInterestTenure" + android:inputType="none" + android:labelFor="@+id/spInterestTenure" + android:textColorHint="@color/greyColor2" + android:textSize="@dimen/text_size_14" + tool:ignore="DuplicateSpeakableTextCheck,LabelFor,TextContrastCheck" /> + + + + + + + + - - - - - - - - - - - + - - - - + + + - + - + - + - - + + + + + + + + + + android:padding="@dimen/margin_15"> - + - - - - - + - +