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 000e772..71c100e 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 @@ -69,4 +69,11 @@ interface ApiInterface { @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 + + } \ 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..72a9bfc --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/CityListResponse.kt @@ -0,0 +1,8 @@ +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 new file mode 100644 index 0000000..8ffae60 --- /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/DataObject.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/DataObject.kt new file mode 100644 index 0000000..c4a296f --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/DataObject.kt @@ -0,0 +1,11 @@ +package com.nivesh.production.bajajfd.model + +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 +) \ 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..542f198 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/DataObjectX.kt @@ -0,0 +1,6 @@ +package com.nivesh.production.bajajfd.model + +data class DataObjectX( + val city_id: Int, + val city_name: String +) \ 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/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/repositories/MainRepository.kt b/app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt index 857e9ba..27d34f6 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 @@ -60,4 +60,9 @@ 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 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/fragment/StepTwoBajajFDFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt index d50176c..4c29f15 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 @@ -47,6 +47,8 @@ class StepTwoBajajFDFragment : Fragment() { 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 @@ -77,7 +79,7 @@ class StepTwoBajajFDFragment : Fragment() { listOfRelationShip = ArrayList() listOfMaritalStatus = ArrayList() listOfOccupation = ArrayList() - + listOfStates = ArrayList() // Personal Details binding.edtMobileNumber.filters = arrayOf(LengthFilter(10)) binding.edtPANNumber.filters = arrayOf(LengthFilter(10)) @@ -450,11 +452,6 @@ class StepTwoBajajFDFragment : Fragment() { } titleApi() - genderApi() - relationShipApi() - maritalStatusApi() - occupationApi() - annualIncomeApi() binding.btnNext.setOnClickListener { if (validation()) { // Applicant Details @@ -631,7 +628,6 @@ class StepTwoBajajFDFragment : Fragment() { } } - private fun titleApi() { if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { val getCodeRequest = GetCodeRequest() @@ -668,6 +664,13 @@ class StepTwoBajajFDFragment : Fragment() { false ) } + genderApi() + relationShipApi() + maritalStatusApi() + occupationApi() + annualIncomeApi() + stateListApi() + } // 650 -> refreshToken() else -> {} @@ -747,7 +750,7 @@ class StepTwoBajajFDFragment : Fragment() { getCodeRequest.Language = getString(R.string.language) getCodeRequest.InputValue = "" stepTwoBajajFDViewModel.relationShipApi(getCodeRequest, token) - stepTwoBajajFDViewModel.getrelationShipMutableData.observe(viewLifecycleOwner) { response -> + stepTwoBajajFDViewModel.getRelationShipMutableData.observe(viewLifecycleOwner) { response -> when (response) { is Resource.Success -> { Log.e("response", "-->$response") @@ -922,7 +925,7 @@ class StepTwoBajajFDFragment : Fragment() { when (code) { 200 -> { listOfAnnualIncome = getCodeResponse.Response.GetCodesList - if (listOfGender.isNotEmpty()) { + if (listOfAnnualIncome.isNotEmpty()) { val adapter = ArrayAdapter( activity as BajajFdMainActivity, R.layout.spinner_dropdown, @@ -955,6 +958,110 @@ class StepTwoBajajFDFragment : Fragment() { } } + 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_Code) + } + } + // 650 -> refreshToken() + else -> {} + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Log.e(" ", "An error occurred:$message") + } + } + is Resource.Loading -> { + + } + } + } + + } + } + private fun cityListApi(stateCode: String?) { + + val cityRequest = CityRequest() + if (stateCode != null) { + cityRequest.StateCode = stateCode.toInt() + } + 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.spIncome.setAdapter(adapter) + binding.spIncome.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 { 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 c3d379c..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,7 @@ 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 @@ -67,11 +68,11 @@ class StepTwoBajajFDViewModel(private val mainRepository: MainRepository) : View getAnnualIncomeMutableData.postValue(handleRatesResponse(response)) } - val getrelationShipMutableData: MutableLiveData> = MutableLiveData() + val getRelationShipMutableData: MutableLiveData> = MutableLiveData() fun relationShipApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch { - getrelationShipMutableData.postValue(Resource.Loading()) + getRelationShipMutableData.postValue(Resource.Loading()) val response = mainRepository.relationShipCheck(getCodeRequest, token) - getrelationShipMutableData.postValue(handleRatesResponse(response)) + getRelationShipMutableData.postValue(handleRatesResponse(response)) } val getMaritalStatusMutableData: MutableLiveData> = MutableLiveData() @@ -88,4 +89,19 @@ class StepTwoBajajFDViewModel(private val mainRepository: MainRepository) : View 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