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 2c7c967..f426d2a 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 @@ -52,13 +52,13 @@ interface ApiInterface { @POST("FinaliseFD") suspend fun finaliseFD( - @Body requestBody: RequestBody, + @Body requestBody: FinalizeFDRequest, @Header("token") token: String ): Response @POST("FinaliseKYC") suspend fun finaliseKYC( - @Body requestBody: RequestBody, + @Body requestBody: FinalizeKYCRequest, @Header("token") token: String ): Response diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/FinaliseFD.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/FinaliseFD.kt new file mode 100644 index 0000000..b487f60 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/FinaliseFD.kt @@ -0,0 +1,7 @@ +package com.nivesh.production.bajajfd.model + +data class FinaliseFD( + var FDProvider: String? = "", + var NiveshClientCode: String? = "", + var UniqueId: String? = "" +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/FinalizeFDRequest.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/FinalizeFDRequest.kt new file mode 100644 index 0000000..e77b6bf --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/FinalizeFDRequest.kt @@ -0,0 +1,5 @@ +package com.nivesh.production.bajajfd.model + +data class FinalizeFDRequest( + var FinaliseFD: FinaliseFD? = null +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/FinalizeFDResponse.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/FinalizeFDResponse.kt new file mode 100644 index 0000000..ea2554c --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/FinalizeFDResponse.kt @@ -0,0 +1,5 @@ +package com.nivesh.production.bajajfd.model + +data class FinalizeFDResponse( + val Response: ResponseXXXXXXXXXXXXXXXX +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/FinalizeKYCRequest.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/FinalizeKYCRequest.kt new file mode 100644 index 0000000..cb1e51e --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/FinalizeKYCRequest.kt @@ -0,0 +1,7 @@ +package com.nivesh.production.bajajfd.model + +data class FinalizeKYCRequest( + var FDProvider: String? = "", + var NiveshClientCode: String? = "", + var UniqueId: String? = "" +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXXXXXXX.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXXXXXXX.kt new file mode 100644 index 0000000..c16ac00 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXXXXXXX.kt @@ -0,0 +1,9 @@ +package com.nivesh.production.bajajfd.model + +data class ResponseXXXXXXXXXXXXXXXX( + val Errors: List, + val Message: String, + val Status: String, + val StatusCode: Int, + val UniqueId: String +) \ 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 80514ed..23eef56 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 @@ -4,18 +4,22 @@ import com.nivesh.production.bajajfd.interfaces.ApiInterface import com.nivesh.production.bajajfd.model.* class MainRepository constructor(private val apiInterface: ApiInterface) { - suspend fun getRatesResponse(getRatesRequest: GetRatesRequest, token: String) = - apiInterface.getRates(getRatesRequest, token) - - suspend fun getCodesResponse(requestBody: GetCodeRequest, token: String) = - apiInterface.getCodes(requestBody, token) + // MainActivity suspend fun getStepsCountResponse(requestBody: FDStepsCountRequest, token: String) = apiInterface.getFDStepsCount(requestBody, token) suspend fun getClientDetailsResponse(getClientDetails: getClientDetailsRequest, token: String) = apiInterface.getClientDetails(getClientDetails, token) + + // Step One + suspend fun getRatesResponse(getRatesRequest: GetRatesRequest, token: String) = + apiInterface.getRates(getRatesRequest, token) + + suspend fun getCodesResponse(requestBody: GetCodeRequest, token: String) = + apiInterface.getCodes(requestBody, token) + suspend fun createCalculateFDMaturityAmount( requestBody: GetMaturityAmountRequest, token: String @@ -23,30 +27,10 @@ class MainRepository constructor(private val apiInterface: ApiInterface) { apiInterface.getCalculateFDMaturityAmount(requestBody, token) + // Step Two suspend fun createFDKYCResponse(createFDRequest: CreateFDRequest, token: String) = apiInterface.createFDApp(createFDRequest, token) - suspend fun documentsUploadResponse(getRatesRequest: DocumentUpload, token: String) = - apiInterface.documentsUpload(getRatesRequest, token) - - suspend fun saveFDOtherDataResponse(getRatesRequest: SaveFDOtherDataRequest, token: String) = - apiInterface.saveFDOtherData(getRatesRequest, token) - - suspend fun getFDDetailsResponse(getRatesRequest: GetFDDetailsRequest, token: String) = - apiInterface.getFDDetails(getRatesRequest, token) - - suspend fun updateFDPaymentStatusResponse(getRatesRequest: GetRatesRequest, token: String) = - apiInterface.getRates(getRatesRequest, token) - - suspend fun finaliseFDResponse(getRatesRequest: GetRatesRequest, token: String) = - apiInterface.getRates(getRatesRequest, token) - - suspend fun finaliseKYCResponse(getRatesRequest: GetRatesRequest, token: String) = - apiInterface.getRates(getRatesRequest, token) - - suspend fun paymentReQueryResponse(getRatesRequest: PaymentReQueryRequest, token: String) = - apiInterface.paymentReQuery(getRatesRequest, token) - suspend fun panCheck(panCheck: PanCheckRequest, token: String) = apiInterface.panCheckApi(panCheck, token) @@ -86,13 +70,41 @@ class MainRepository constructor(private val apiInterface: ApiInterface) { suspend fun payModeCheck(getCodeRequest: GetCodeRequest, token: String) = apiInterface.payModeApi(getCodeRequest, token) + suspend fun bankValidationApiRequest(bankValidationApiRequest: BankValidationApiRequest, token: String) = + apiInterface.bankValidationApi(bankValidationApiRequest, token) + + + + // Step Three + suspend fun documentsUploadResponse(getRatesRequest: DocumentUpload, token: String) = + apiInterface.documentsUpload(getRatesRequest, token) + + + suspend fun saveFDOtherDataResponse(getRatesRequest: SaveFDOtherDataRequest, token: String) = + apiInterface.saveFDOtherData(getRatesRequest, token) + + suspend fun getFDDetailsResponse(getRatesRequest: GetFDDetailsRequest, token: String) = + apiInterface.getFDDetails(getRatesRequest, token) + + suspend fun updateFDPaymentStatusResponse(getRatesRequest: GetRatesRequest, token: String) = + apiInterface.getRates(getRatesRequest, token) + + + // Step 4 suspend fun customerListCheck(getCodeRequest: GetCodeRequest, token: String) = apiInterface.customerListApi(getCodeRequest, token) suspend fun checkFDKYCRequest(checkFDKYCRequest: CheckFDKYCRequest, token: String) = apiInterface.checkFDKYC(checkFDKYCRequest, token) - suspend fun bankValidationApiRequest(bankValidationApiRequest: BankValidationApiRequest, token: String) = - apiInterface.bankValidationApi(bankValidationApiRequest, token) + // Step 5 + suspend fun finaliseFDResponse(getRatesRequest: FinalizeFDRequest, token: String) = + apiInterface.finaliseFD(getRatesRequest, token) + + suspend fun finaliseKYCResponse(getRatesRequest: FinalizeKYCRequest, token: String) = + apiInterface.finaliseKYC(getRatesRequest, token) + + suspend fun paymentReQueryResponse(getRatesRequest: PaymentReQueryRequest, token: String) = + apiInterface.paymentReQuery(getRatesRequest, token) } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFiveBajajFDFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFiveBajajFDFragment.kt index 4bec0fb..224961c 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFiveBajajFDFragment.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFiveBajajFDFragment.kt @@ -1,15 +1,20 @@ package com.nivesh.production.bajajfd.ui.fragment import android.os.Bundle +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment +import com.google.gson.Gson import com.nivesh.production.bajajfd.R import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepFiveBinding -import com.nivesh.production.bajajfd.model.PaymentReQueryResponse +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.Constants +import com.nivesh.production.bajajfd.util.Resource class StepFiveBajajFDFragment : Fragment() { @@ -25,6 +30,16 @@ class StepFiveBajajFDFragment : Fragment() { return binding.root } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + binding.tvCongrats.text = "" + binding.tvSuccessMessage.text = "" + binding.btnViewOrder.setOnClickListener { + + } + } + fun getData(paymentReQueryResponse: PaymentReQueryResponse) { if (paymentReQueryResponse.Response.StatusCode == 200) { if (paymentReQueryResponse.Response.Message.isNotEmpty()) { @@ -51,18 +66,106 @@ class StepFiveBajajFDFragment : Fragment() { binding.tvSuccessMessage.text = arrOfStr[1] } } + finalizeFDApi() + finalizeKYCApi() } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) + private fun finalizeFDApi() { + val finalizeFDRequest = FinalizeFDRequest() + val finaliseFD = FinaliseFD() + finaliseFD.FDProvider = getString(R.string.bajaj) + finaliseFD.NiveshClientCode = (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE + finaliseFD.UniqueId = (activity as BajajFdMainActivity).uniqueId + finalizeFDRequest.FinaliseFD = finaliseFD - binding.tvCongrats.text = "" - binding.tvSuccessMessage.text = "" - binding.btnViewOrder.setOnClickListener { + (activity as BajajFdMainActivity).viewModel.finaliseFD( + finalizeFDRequest, Constants.token, activity as BajajFdMainActivity + ) + (activity as BajajFdMainActivity).viewModel.getFinalizeFDMutableData.observe(viewLifecycleOwner){ response -> + when (response) { + is Resource.Success -> { + Log.e("finalizeKYC ", " response-->${response.data.toString()}") + val finalizeFDResponse: FinalizeFDResponse = + Gson().fromJson(response.data?.toString(), FinalizeFDResponse::class.java) + finalizeFDResponse.Response.StatusCode.let { code -> + when (code) { + 200 -> { + } + 650 -> "" + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + finalizeFDResponse.Response.Errors[0].ErrorMessage + ) + } + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Common.showDialogValidation(activity as BajajFdMainActivity, message) + } + } + is Resource.Loading -> { + + } + is Resource.DataError -> { + + } + } } } + private fun finalizeKYCApi() { + val finalizeKYCRequest = FinalizeKYCRequest() + finalizeKYCRequest.FDProvider = getString(R.string.bajaj) + finalizeKYCRequest.NiveshClientCode = (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE + finalizeKYCRequest.UniqueId = (activity as BajajFdMainActivity).uniqueId + (activity as BajajFdMainActivity).viewModel.finaliseKYC( + finalizeKYCRequest, Constants.token, activity as BajajFdMainActivity + ) + (activity as BajajFdMainActivity).viewModel.getFinalizeKYCMutableData.observe(viewLifecycleOwner){ response -> + when (response) { + is Resource.Success -> { + Log.e("finalizeKYC ", " response-->${response.data.toString()}") + val finalizeFDResponse: FinalizeFDResponse = + Gson().fromJson(response.data?.toString(), FinalizeFDResponse::class.java) + finalizeFDResponse.Response.StatusCode.let { code -> + when (code) { + 200 -> { + + } + 650 -> "" + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + finalizeFDResponse.Response.Errors[0].ErrorMessage + ) + } + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Common.showDialogValidation(activity as BajajFdMainActivity, message) + } + } + is Resource.Loading -> { + + } + is Resource.DataError -> { + + } + } + } + + } + + + override fun onDestroyView() { super.onDestroyView() _binding = null 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 47adbc4..c323cb7 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 @@ -357,21 +357,23 @@ open class BajajFDViewModel(private val mainRepository: MainRepository) : ViewMo } } - fun finaliseFD(getRatesRequest: GetRatesRequest, token: String, + val getFinalizeFDMutableData: MutableLiveData> = MutableLiveData() + fun finaliseFD(finalizeFDRequest: FinalizeFDRequest, token: String, activity: Activity) = viewModelScope.launch(handleError(activity)) { if (Common.isNetworkAvailable(activity)) { - getRatesMutableData.postValue(Resource.Loading()) - val response = mainRepository.finaliseFDResponse(getRatesRequest, token) - getRatesMutableData.postValue(handleResponse(response)) + getFinalizeFDMutableData.postValue(Resource.Loading()) + val response = mainRepository.finaliseFDResponse(finalizeFDRequest, token) + getFinalizeFDMutableData.postValue(handleResponse(response)) } } - fun finaliseKYC(getRatesRequest: GetRatesRequest, token: String, + val getFinalizeKYCMutableData: MutableLiveData> = MutableLiveData() + fun finaliseKYC(getRatesRequest: FinalizeKYCRequest, token: String, activity: Activity) = viewModelScope.launch(handleError(activity)) { if (Common.isNetworkAvailable(activity)) { - getRatesMutableData.postValue(Resource.Loading()) + getFinalizeKYCMutableData.postValue(Resource.Loading()) val response = mainRepository.finaliseKYCResponse(getRatesRequest, token) - getRatesMutableData.postValue(handleResponse(response)) + getFinalizeKYCMutableData.postValue(handleResponse(response)) } }