AA-24 | Shashidhara | WIP: API Integration
This commit is contained in:
@@ -7,12 +7,14 @@ import retrofit2.Response
|
||||
import retrofit2.http.Body
|
||||
import retrofit2.http.PATCH
|
||||
import retrofit2.http.POST
|
||||
import retrofit2.http.Path
|
||||
|
||||
private const val BASE_URL = "https://auth-service.np.navi-tech.in"
|
||||
private const val BASE_URL = "https://b73c209f-908f-4019-b6ae-6f9f58bcaf16.mock.pstmn.io"
|
||||
//private const val BASE_URL = "https://auth-service.np.navi-tech.in"
|
||||
|
||||
interface InputPanApi {
|
||||
@PATCH("/party/persons/:id/POI")
|
||||
suspend fun submitPan(@Body inputPanRequest: InputPanRequest): Response<InputPanResponse>
|
||||
@PATCH("/loan-origination-manager/loan-applications/{loanApplicationId}/POI")
|
||||
suspend fun submitPan(@Path("loanApplicationId") loanApplicationId: String, @Body inputPanRequest: InputPanRequest): Response<InputPanResponse>
|
||||
|
||||
companion object {
|
||||
operator fun invoke(): InputPanApi {
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.navi.medici.androidCustomerApp.api
|
||||
import com.navi.medici.androidCustomerApp.common.RetrofitService
|
||||
import com.navi.medici.androidCustomerApp.models.response.KycDocumentUploadResponse
|
||||
import okhttp3.MultipartBody
|
||||
import okhttp3.RequestBody
|
||||
import retrofit2.Response
|
||||
import retrofit2.http.Multipart
|
||||
import retrofit2.http.POST
|
||||
@@ -12,11 +13,12 @@ import retrofit2.http.Path
|
||||
interface KycDocumentUploadApi {
|
||||
@Multipart
|
||||
@POST("/loan-application-service/loan-applications/{loanApplicationId}/POA")
|
||||
suspend fun submitPoaDocument(@Path("loanApplicationId") loanApplicationId: String, @Part poaDocument: MultipartBody.Part): Response<KycDocumentUploadResponse>
|
||||
suspend fun submitPoaDocument(@Path("loanApplicationId") loanApplicationId: String, @Part("type") type: RequestBody, @Part poaDocument: MultipartBody.Part): Response<KycDocumentUploadResponse>
|
||||
|
||||
companion object {
|
||||
// private const val BASE_URL = "https://loan-origination-service.np.navi-tech.in"
|
||||
private const val BASE_URL = "https://77614f4e-45a5-49a3-928c-b232ce7620ef.mock.pstmn.io"
|
||||
// private const val BASE_URL = "https://loan-origination-service.np.navi-tech.in"
|
||||
private const val BASE_URL = "https://b73c209f-908f-4019-b6ae-6f9f58bcaf16.mock.pstmn.io"
|
||||
|
||||
operator fun invoke(): KycDocumentUploadApi {
|
||||
return RetrofitService.build(BASE_URL).create(KycDocumentUploadApi::class.java)
|
||||
}
|
||||
|
||||
@@ -4,35 +4,40 @@ import com.navi.medici.androidCustomerApp.common.RetrofitService
|
||||
import com.navi.medici.androidCustomerApp.models.ApplicationSummary
|
||||
import com.navi.medici.androidCustomerApp.models.OfferResponse
|
||||
import com.navi.medici.androidCustomerApp.models.OfferSelected
|
||||
import com.navi.medici.androidCustomerApp.models.request.LoanApplicationRequest
|
||||
import com.navi.medici.androidCustomerApp.models.response.CreateApplicationResponse
|
||||
import com.navi.medici.androidCustomerApp.models.response.OfferAcceptResponse
|
||||
import com.navi.medici.androidCustomerApp.models.response.UpdateLoanApplicationResponse
|
||||
import retrofit2.Response
|
||||
import retrofit2.http.*
|
||||
|
||||
private const val BASE_URL = "https://loan-origination-service.np.navi-tech.in"
|
||||
private const val BASE_URL = "https://b73c209f-908f-4019-b6ae-6f9f58bcaf16.mock.pstmn.io"
|
||||
|
||||
//private const val BASE_URL = "https://loan-origination-service.np.navi-tech.in"
|
||||
//private const val BASE_URL = "http://192.168.31.220:3020"
|
||||
interface LoanApplicationApi {
|
||||
@PUT("/los/apply-loan")
|
||||
@PUT("loan-application-service/loan-applications/{loanApplicationId}/confirm")
|
||||
suspend fun acceptOffer(
|
||||
@Body offerData: OfferSelected?
|
||||
): Response<OfferAcceptResponse>
|
||||
@Path("loanApplicationId") loanApplicationId: String): Response<OfferAcceptResponse>
|
||||
|
||||
@PUT("/los/application")
|
||||
@PUT("/loan-origination-manager/loan-applications")
|
||||
suspend fun createApplication(
|
||||
@Body offerData: OfferSelected?
|
||||
@Body loanApplicationRequest: LoanApplicationRequest
|
||||
): Response<CreateApplicationResponse>
|
||||
|
||||
@PATCH("/loan-application-service/confirm-loan-application")
|
||||
suspend fun updateLoanApplication(
|
||||
@Body offerSelected: OfferSelected
|
||||
): Response<UpdateLoanApplicationResponse>
|
||||
|
||||
@GET("/los/offers")
|
||||
suspend fun fetchOffer(
|
||||
@Query("person_id") personId: String?
|
||||
): Response<OfferResponse>
|
||||
|
||||
|
||||
@GET("/los/application/summary")
|
||||
@GET("/loan-application-service/loan-applications/{loanApplicationId}/summary")
|
||||
suspend fun fetchApplicationSummary(
|
||||
@Query("application_id") applicationId: String?
|
||||
): Response<ApplicationSummary>
|
||||
|
||||
@Path("loanApplicationId") loanApplicationId: String?): Response<ApplicationSummary>
|
||||
|
||||
companion object {
|
||||
operator fun invoke(): LoanApplicationApi {
|
||||
|
||||
@@ -9,7 +9,7 @@ import retrofit2.http.POST
|
||||
|
||||
//private const val BASE_URL = "https://auth-service.np.navi-tech.in"
|
||||
//private const val BASE_URL = "http://192.168.31.220:3020"
|
||||
private const val BASE_URL = "https://77614f4e-45a5-49a3-928c-b232ce7620ef.mock.pstmn.io"
|
||||
private const val BASE_URL = "https://b73c209f-908f-4019-b6ae-6f9f58bcaf16.mock.pstmn.io"
|
||||
|
||||
interface LoginApi {
|
||||
@POST("/auth/otps/generate")
|
||||
|
||||
@@ -6,7 +6,8 @@ import retrofit2.Response
|
||||
import retrofit2.http.GET
|
||||
import retrofit2.http.Query
|
||||
|
||||
private const val BASE_URL = "https://loan-accounts-service.np.navi-tech.in"
|
||||
private const val BASE_URL = "https://b73c209f-908f-4019-b6ae-6f9f58bcaf16.mock.pstmn.io"
|
||||
//private const val BASE_URL = "https://loan-accounts-service.np.navi-tech.in"
|
||||
//private const val BASE_URL = "http://192.168.31.220:3020"
|
||||
|
||||
interface MyLoansApi {
|
||||
|
||||
@@ -9,7 +9,7 @@ import retrofit2.http.POST
|
||||
|
||||
//private const val BASE_URL = "http://192.168.31.220:3020"
|
||||
//private const val BASE_URL = "https://auth-service.np.navi-tech.in"
|
||||
private const val BASE_URL = "https://77614f4e-45a5-49a3-928c-b232ce7620ef.mock.pstmn.io"
|
||||
private const val BASE_URL = "https://b73c209f-908f-4019-b6ae-6f9f58bcaf16.mock.pstmn.io"
|
||||
|
||||
interface OtpApi {
|
||||
@POST("/auth/tokens")
|
||||
|
||||
@@ -10,10 +10,10 @@ import retrofit2.http.PUT
|
||||
//private const val BASE_URL = "https://auth-service.np.navi-tech.in"
|
||||
//private const val BASE_URL = "http://192.168.31.220:3020"
|
||||
//private const val BASE_URL = "https://auth-service.np.navi-tech.in"
|
||||
private const val BASE_URL = "https://77614f4e-45a5-49a3-928c-b232ce7620ef.mock.pstmn.io"
|
||||
private const val BASE_URL = "https://b73c209f-908f-4019-b6ae-6f9f58bcaf16.mock.pstmn.io"
|
||||
|
||||
interface RegisterApi {
|
||||
@PUT("/auth/app-installations/register")
|
||||
@PUT("/app-installations/register")
|
||||
suspend fun checkDevice(@Body registerRequest: RegisterRequest): Response<RegisterResponse>
|
||||
|
||||
companion object {
|
||||
|
||||
@@ -8,13 +8,15 @@ import retrofit2.http.Multipart
|
||||
import retrofit2.http.POST
|
||||
import retrofit2.http.Part
|
||||
import okhttp3.MultipartBody
|
||||
import retrofit2.http.Path
|
||||
|
||||
private const val BASE_URL = "https://auth-service.np.navi-tech.in"
|
||||
private const val BASE_URL = "https://b73c209f-908f-4019-b6ae-6f9f58bcaf16.mock.pstmn.io"
|
||||
//private const val BASE_URL = "https://auth-service.np.navi-tech.in"
|
||||
|
||||
interface UploadPanApi {
|
||||
@Multipart
|
||||
@POST("/origination/documents/POI/")
|
||||
suspend fun uploadPan(@Part("type") type: RequestBody, @Part image: MultipartBody.Part): Response<UploadPanResponse>
|
||||
@POST("/loan-origination-manager/loan-applications/{loanApplicationId}/POI")
|
||||
suspend fun uploadPan(@Path("loanApplicationId") loanApplicationId: String, @Part("type") type: RequestBody, @Part image: MultipartBody.Part): Response<UploadPanResponse>
|
||||
|
||||
companion object {
|
||||
operator fun invoke(): UploadPanApi {
|
||||
|
||||
@@ -3,12 +3,11 @@ package com.navi.medici.androidCustomerApp.models
|
||||
import java.math.BigDecimal
|
||||
|
||||
data class OfferSelected(
|
||||
var applicationId: String? = "",
|
||||
var personId: String? = "",
|
||||
var offerId: String? = "",
|
||||
var loanAmount: Money?,
|
||||
var tenure: TenureDetails?,
|
||||
var rateOfInterest: BigDecimal? = BigDecimal(0),
|
||||
var selectionReasonId: Long?
|
||||
|
||||
) {
|
||||
}
|
||||
)
|
||||
@@ -0,0 +1,6 @@
|
||||
package com.navi.medici.androidCustomerApp.models.request
|
||||
|
||||
data class LoanApplicationRequest(
|
||||
val personId: String,
|
||||
val productId: String
|
||||
)
|
||||
@@ -0,0 +1,3 @@
|
||||
package com.navi.medici.androidCustomerApp.models.response
|
||||
|
||||
data class UpdateLoanApplicationResponse(val success: Boolean?)
|
||||
@@ -23,7 +23,7 @@ object PreferenceManager {
|
||||
fun getApplicationId(context: Context): String? {
|
||||
return PreferenceWrapper.getStringPreference(
|
||||
context,
|
||||
PreferenceNames.CUSTOMER_ID
|
||||
PreferenceNames.LOAN_APPLICATION_ID
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,6 @@ import com.navi.medici.androidCustomerApp.api.InputPanApi
|
||||
import com.navi.medici.androidCustomerApp.models.request.InputPanRequest
|
||||
|
||||
class InputPanRepository(private val inputPanApi: InputPanApi) {
|
||||
suspend fun submitPan(inputPanRequest: InputPanRequest) =
|
||||
suspend { inputPanApi.submitPan(inputPanRequest) }.invoke()
|
||||
suspend fun submitPan(loanApplicationId: String, inputPanRequest: InputPanRequest) =
|
||||
suspend { inputPanApi.submitPan(loanApplicationId, inputPanRequest) }.invoke()
|
||||
}
|
||||
@@ -2,8 +2,19 @@ package com.navi.medici.androidCustomerApp.repositories
|
||||
|
||||
import com.navi.medici.androidCustomerApp.api.KycDocumentUploadApi
|
||||
import okhttp3.MultipartBody
|
||||
import okhttp3.RequestBody
|
||||
|
||||
class KycDocumentUploadRepository(private val kycDocumentUploadApi: KycDocumentUploadApi) {
|
||||
suspend fun submitPoaDocument(loanApplicationId: String, poaDocument: MultipartBody.Part) =
|
||||
suspend { kycDocumentUploadApi.submitPoaDocument(loanApplicationId, poaDocument) }.invoke()
|
||||
suspend fun submitPoaDocument(
|
||||
loanApplicationId: String,
|
||||
type: RequestBody,
|
||||
poaDocument: MultipartBody.Part
|
||||
) =
|
||||
suspend {
|
||||
kycDocumentUploadApi.submitPoaDocument(
|
||||
loanApplicationId,
|
||||
type,
|
||||
poaDocument
|
||||
)
|
||||
}.invoke()
|
||||
}
|
||||
@@ -2,10 +2,21 @@ package com.navi.medici.androidCustomerApp.loan_application
|
||||
|
||||
import com.navi.medici.androidCustomerApp.api.LoanApplicationApi
|
||||
import com.navi.medici.androidCustomerApp.models.OfferSelected
|
||||
import com.navi.medici.androidCustomerApp.models.request.LoanApplicationRequest
|
||||
|
||||
class LoanApplicationRepository(private val loanApplicationApi: LoanApplicationApi) {
|
||||
suspend fun offerAccept(offerAcceptInput: OfferSelected?) = suspend { loanApplicationApi.acceptOffer(offerAcceptInput) }.invoke()
|
||||
suspend fun createApplication(offerAcceptInput: OfferSelected?) = suspend { loanApplicationApi.createApplication(offerAcceptInput) }.invoke()
|
||||
suspend fun fetchOffer(personId: String?) = suspend { loanApplicationApi.fetchOffer(personId) }.invoke()
|
||||
suspend fun fetchApplicationSummary(applicationId: String?) = suspend { loanApplicationApi.fetchApplicationSummary(applicationId) }.invoke()
|
||||
suspend fun offerAccept(loanApplicationId: String) =
|
||||
suspend { loanApplicationApi.acceptOffer(loanApplicationId) }.invoke()
|
||||
|
||||
suspend fun createApplication(loanApplicationRequest: LoanApplicationRequest) =
|
||||
suspend { loanApplicationApi.createApplication(loanApplicationRequest) }.invoke()
|
||||
|
||||
suspend fun fetchOffer(personId: String?) =
|
||||
suspend { loanApplicationApi.fetchOffer(personId) }.invoke()
|
||||
|
||||
suspend fun fetchApplicationSummary(applicationId: String?) =
|
||||
suspend { loanApplicationApi.fetchApplicationSummary(applicationId) }.invoke()
|
||||
|
||||
suspend fun updateLoanApplication(offerSelected: OfferSelected) =
|
||||
suspend { loanApplicationApi.updateLoanApplication(offerSelected) }.invoke()
|
||||
}
|
||||
@@ -6,6 +6,6 @@ import okhttp3.RequestBody
|
||||
import retrofit2.http.Part
|
||||
|
||||
class UploadPanRepository(private val uploadPanApi: UploadPanApi) {
|
||||
suspend fun uploadPan(@Part type: RequestBody, @Part image: MultipartBody.Part) =
|
||||
suspend { uploadPanApi.uploadPan(type, image) }.invoke()
|
||||
suspend fun uploadPan(loanApplicationId: String, @Part type: RequestBody, @Part image: MultipartBody.Part) =
|
||||
suspend { uploadPanApi.uploadPan(loanApplicationId, type, image) }.invoke()
|
||||
}
|
||||
@@ -29,7 +29,7 @@ class InputPanActivity : AppCompatActivity() {
|
||||
|
||||
binding.continueButton.setOnClickListener {
|
||||
if (binding.checkbox.isChecked) {
|
||||
inputPanViewModel.submitPan(binding.panEdit.text.toString())
|
||||
inputPanViewModel.submitPan(binding.panEdit.text.toString(), this)
|
||||
} else {
|
||||
Toast.makeText(
|
||||
this,
|
||||
@@ -40,6 +40,7 @@ class InputPanActivity : AppCompatActivity() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private fun panSubmittedObserver(): Observer<Boolean> {
|
||||
return Observer {
|
||||
if (it) {
|
||||
|
||||
@@ -16,6 +16,8 @@ import androidx.lifecycle.Observer
|
||||
import androidx.lifecycle.ViewModelProviders
|
||||
import com.navi.medici.androidCustomerApp.R
|
||||
import com.navi.medici.androidCustomerApp.databinding.ActivityUploadPanBinding
|
||||
import com.navi.medici.androidCustomerApp.preferences.PreferenceManager
|
||||
import com.navi.medici.androidCustomerApp.viewModels.PreliminaryOfferViewModel
|
||||
import com.navi.medici.androidCustomerApp.viewModels.UploadPanViewModel
|
||||
import java.io.ByteArrayOutputStream
|
||||
import java.io.File
|
||||
@@ -34,6 +36,9 @@ class UploadPanActivity : AppCompatActivity() {
|
||||
binding = DataBindingUtil.setContentView(this, R.layout.activity_upload_pan)
|
||||
uploadPanViewModel = ViewModelProviders.of(this).get(UploadPanViewModel::class.java)
|
||||
|
||||
uploadPanViewModel.onSubmitApplicationCreate(
|
||||
PreferenceManager.getPersonId(this) ?: "123", "123", this
|
||||
)
|
||||
if (!checkPermissions()) {
|
||||
requestPermissions()
|
||||
} else {
|
||||
@@ -124,6 +129,6 @@ class UploadPanActivity : AppCompatActivity() {
|
||||
fos.flush()
|
||||
fos.close()
|
||||
|
||||
uploadPanViewModel.uploadPan(panImageFile)
|
||||
uploadPanViewModel.uploadPan(panImageFile, this)
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,7 @@ import androidx.lifecycle.ViewModelProviders
|
||||
import com.navi.medici.androidCustomerApp.R
|
||||
import com.navi.medici.androidCustomerApp.adapters.LoanReasonAdapter
|
||||
import com.navi.medici.androidCustomerApp.databinding.PreliminaryOfferFragmentBinding
|
||||
import com.navi.medici.androidCustomerApp.models.LoanReason
|
||||
import com.navi.medici.androidCustomerApp.models.Money
|
||||
import com.navi.medici.androidCustomerApp.models.TenureDetails
|
||||
import com.navi.medici.androidCustomerApp.models.TenureUnit
|
||||
@@ -61,7 +62,8 @@ class PreliminaryOfferFragment : Fragment() {
|
||||
binding.tenureSlider.progress = binding.tenureSlider.max / 2
|
||||
binding.amountSlider.progress = binding.amountSlider.max / 2
|
||||
offer?.let {
|
||||
binding.reasonSpinner.adapter = LoanReasonAdapter(activity, offer.loanReasons)
|
||||
val loanReasons = listOf(LoanReason(1, "Education"))
|
||||
binding.reasonSpinner.adapter = LoanReasonAdapter(activity, loanReasons)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -105,13 +107,9 @@ class PreliminaryOfferFragment : Fragment() {
|
||||
}
|
||||
|
||||
binding.acceptOfferBtn.setOnClickListener {
|
||||
viewModel.onSubmitApplicationCreate(
|
||||
PreferenceManager.getPersonId(activity),
|
||||
binding.reasonSpinner.selectedItemId
|
||||
)
|
||||
viewModel.onClickAcceptOffer(activity as Activity, binding.reasonSpinner.selectedItemId)
|
||||
}
|
||||
|
||||
|
||||
viewModel.selectedLoanAmount.observe(this, Observer { loanAmount ->
|
||||
binding.loanSelectedAmountTxt.text = loanAmount?.getDisplayStr()
|
||||
})
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
package com.navi.medici.androidCustomerApp.viewModels
|
||||
|
||||
import android.content.Context
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import com.navi.medici.androidCustomerApp.api.InputPanApi
|
||||
import com.navi.medici.androidCustomerApp.repositories.InputPanRepository
|
||||
import com.navi.medici.androidCustomerApp.models.request.InputPanRequest
|
||||
import com.navi.medici.androidCustomerApp.preferences.PreferenceManager
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
@@ -17,16 +19,16 @@ class InputPanViewModel : ViewModel() {
|
||||
private val coroutineScope = CoroutineScope(Dispatchers.Main)
|
||||
private val inputPanRepository = InputPanRepository(InputPanApi())
|
||||
|
||||
fun submitPan(pan: String) {
|
||||
fun submitPan(pan: String, context: Context) {
|
||||
val inputPanRequest = InputPanRequest(pan)
|
||||
coroutineScope.launch {
|
||||
val response = inputPanRepository.submitPan(inputPanRequest)
|
||||
if (response.isSuccessful) {
|
||||
_panSubmitted.value = true
|
||||
} else {
|
||||
_panSubmitted.value = false
|
||||
}
|
||||
val response = inputPanRepository.submitPan(
|
||||
PreferenceManager.getApplicationId(context).toString(),
|
||||
inputPanRequest
|
||||
)
|
||||
_panSubmitted.value = response.isSuccessful
|
||||
}
|
||||
_panSubmitted.value = true
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package com.navi.medici.androidCustomerApp.viewModels
|
||||
import android.net.Uri
|
||||
import android.view.View
|
||||
import android.widget.AdapterView
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import com.navi.medici.androidCustomerApp.api.KycDocumentUploadApi
|
||||
import com.navi.medici.androidCustomerApp.databinding.KycDocumentUploadFragmentBinding
|
||||
@@ -10,13 +11,16 @@ import com.navi.medici.androidCustomerApp.repositories.KycDocumentUploadReposito
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import okhttp3.MediaType
|
||||
import okhttp3.MultipartBody
|
||||
import okhttp3.RequestBody
|
||||
import java.io.File
|
||||
|
||||
class KycDocumentUploadViewModel : ViewModel() {
|
||||
val proofOfAddresses = arrayOf("Choose POA Document", "Aadhar card", "PAN card")
|
||||
private val kycDocumentUploadRepository = KycDocumentUploadRepository(KycDocumentUploadApi())
|
||||
private val coroutineScope = CoroutineScope(Dispatchers.Main)
|
||||
private val documentSelectedForUpload = MutableLiveData<String>()
|
||||
|
||||
fun onItemSelectedListener(binding: KycDocumentUploadFragmentBinding): AdapterView.OnItemSelectedListener {
|
||||
return object : AdapterView.OnItemSelectedListener {
|
||||
@@ -28,6 +32,7 @@ class KycDocumentUploadViewModel : ViewModel() {
|
||||
) {
|
||||
binding.uploadDocumentButton.visibility =
|
||||
if (position == 0) View.INVISIBLE else View.VISIBLE
|
||||
documentSelectedForUpload.value = parent?.selectedItem.toString()
|
||||
}
|
||||
|
||||
override fun onNothingSelected(parent: AdapterView<*>?) {}
|
||||
@@ -41,7 +46,14 @@ class KycDocumentUploadViewModel : ViewModel() {
|
||||
MultipartBody.Part.createFormData("poa_document", poaDocumentFile.name)
|
||||
coroutineScope.launch {
|
||||
loanApplicationId?.let { loanApplicationId ->
|
||||
kycDocumentUploadRepository.submitPoaDocument(loanApplicationId, poaDocument)
|
||||
kycDocumentUploadRepository.submitPoaDocument(
|
||||
loanApplicationId,
|
||||
RequestBody.create(
|
||||
MediaType.parse("text/plain"),
|
||||
documentSelectedForUpload.toString()
|
||||
),
|
||||
poaDocument
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ class OfferAcceptViewModel : ViewModel() {
|
||||
private val _applicationSummary = MutableLiveData<ApplicationSummary>()
|
||||
private val offerAcceptRepository = LoanApplicationRepository(LoanApplicationApi())
|
||||
private val coroutineScope = CoroutineScope(Dispatchers.Main)
|
||||
|
||||
|
||||
val customerId: LiveData<String>
|
||||
get() = _customerId
|
||||
|
||||
@@ -28,16 +28,18 @@ class OfferAcceptViewModel : ViewModel() {
|
||||
coroutineScope.launch {
|
||||
var applicationDetail = applicationSummary.value?.loanApplicationDetails
|
||||
// TODO: updateit to send only the application id
|
||||
var offerSelected = OfferSelected(
|
||||
personId,
|
||||
applicationDetail?.offerId,
|
||||
applicationDetail?.loanAmount,
|
||||
applicationDetail?.tenure,
|
||||
applicationDetail?.rateOfInterest,
|
||||
1
|
||||
)
|
||||
// var offerSelected = OfferSelected(
|
||||
//
|
||||
// personId,
|
||||
// applicationDetail?.offerId,
|
||||
// applicationDetail?.loanAmount,
|
||||
// applicationDetail?.tenure,
|
||||
// applicationDetail?.rateOfInterest,
|
||||
// 1
|
||||
// )
|
||||
|
||||
val response = offerAcceptRepository.offerAccept(offerSelected)
|
||||
val response =
|
||||
offerAcceptRepository.offerAccept(applicationDetail?.id.toString())
|
||||
if (response.isSuccessful) {
|
||||
_customerId.value = response.body()?.customerId
|
||||
Timber.i("Offer Accept response $response.body().toString()")
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
package com.navi.medici.androidCustomerApp.viewModels
|
||||
|
||||
import android.app.Activity
|
||||
import android.util.Log
|
||||
import androidx.databinding.ObservableField
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import com.navi.medici.androidCustomerApp.api.LoanApplicationApi
|
||||
import com.navi.medici.androidCustomerApp.loan_application.LoanApplicationRepository
|
||||
import com.navi.medici.androidCustomerApp.models.*
|
||||
import com.navi.medici.androidCustomerApp.preferences.PreferenceManager
|
||||
import com.navi.medici.androidCustomerApp.utils.EmiCalculator
|
||||
import com.navi.medici.androidCustomerApp.utils.StepFunctionCalculator
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
@@ -74,28 +75,6 @@ class PreliminaryOfferViewModel : ViewModel() {
|
||||
}
|
||||
}
|
||||
|
||||
fun onSubmitApplicationCreate(
|
||||
personId: String?,
|
||||
selectionReasonId: Long?
|
||||
) {
|
||||
coroutineScope.launch {
|
||||
var offerSelected = OfferSelected(
|
||||
personId,
|
||||
offerResponse.value?.schemeId,
|
||||
_selectedLoanAmount.value,
|
||||
_selectedTenureDetails.value,
|
||||
offerResponse.value?.rateOfInterest,
|
||||
selectionReasonId
|
||||
)
|
||||
|
||||
val response = offerAcceptRepository.createApplication(offerSelected)
|
||||
if (response.isSuccessful) {
|
||||
_applicationId.value = response.body()?.applicationId
|
||||
Log.i("CreateAplctn response", response.body().toString())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun getLoanAmount(): LoanAmount? {
|
||||
return offerResponse.value?.loanAmount
|
||||
}
|
||||
@@ -122,7 +101,7 @@ class PreliminaryOfferViewModel : ViewModel() {
|
||||
amount?.let {
|
||||
tenureDetails?.let {
|
||||
calculateEmi(
|
||||
amount?.amount,
|
||||
amount.amount,
|
||||
tenureDetails
|
||||
)
|
||||
}
|
||||
@@ -157,4 +136,21 @@ class PreliminaryOfferViewModel : ViewModel() {
|
||||
}
|
||||
}
|
||||
|
||||
fun onClickAcceptOffer(activity: Activity, selectionReasonId: Long) {
|
||||
coroutineScope.launch {
|
||||
_applicationId.value = PreferenceManager.getApplicationId(activity)
|
||||
val offerSelected = OfferSelected(
|
||||
_applicationId.value,
|
||||
PreferenceManager.getPersonId(activity),
|
||||
offerResponse.value?.schemeId,
|
||||
_selectedLoanAmount.value,
|
||||
_selectedTenureDetails.value,
|
||||
offerResponse.value?.rateOfInterest,
|
||||
selectionReasonId
|
||||
)
|
||||
val response = offerAcceptRepository.updateLoanApplication(offerSelected)
|
||||
Log.i("update loan response", response.body().toString())
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,9 +1,16 @@
|
||||
package com.navi.medici.androidCustomerApp.viewModels
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import com.navi.medici.androidCustomerApp.api.LoanApplicationApi
|
||||
import com.navi.medici.androidCustomerApp.api.UploadPanApi
|
||||
import com.navi.medici.androidCustomerApp.loan_application.LoanApplicationRepository
|
||||
import com.navi.medici.androidCustomerApp.models.request.LoanApplicationRequest
|
||||
import com.navi.medici.androidCustomerApp.preferences.PreferenceManager
|
||||
import com.navi.medici.androidCustomerApp.repositories.UploadPanRepository
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
@@ -20,17 +27,40 @@ class UploadPanViewModel : ViewModel() {
|
||||
get() = _panUploaded
|
||||
private val coroutineScope = CoroutineScope(Dispatchers.Main)
|
||||
private val uploadPanRepository = UploadPanRepository(UploadPanApi())
|
||||
private val loanApplicationRepository = LoanApplicationRepository(LoanApplicationApi())
|
||||
|
||||
fun uploadPan(file: File) {
|
||||
fun uploadPan(file: File, context: Context) {
|
||||
val reqFile = RequestBody.create(MediaType.parse("image/*"), file)
|
||||
val body = MultipartBody.Part.createFormData("upload", file.name, reqFile)
|
||||
val requestType = RequestBody.create(
|
||||
MediaType.parse("text/plain"), "PAN"
|
||||
)
|
||||
coroutineScope.launch {
|
||||
val response = uploadPanRepository.uploadPan(requestType, body)
|
||||
val response = uploadPanRepository.uploadPan(
|
||||
PreferenceManager.getApplicationId(context).toString(),
|
||||
requestType,
|
||||
body
|
||||
)
|
||||
_panUploaded.value = response.isSuccessful
|
||||
}
|
||||
}
|
||||
|
||||
fun onSubmitApplicationCreate(
|
||||
personId: String,
|
||||
productId: String,
|
||||
activity: Activity
|
||||
) {
|
||||
coroutineScope.launch {
|
||||
val loanApplicationRequest = LoanApplicationRequest(personId, productId)
|
||||
val response = loanApplicationRepository.createApplication(loanApplicationRequest)
|
||||
if (response.isSuccessful) {
|
||||
val applicationId = response.body()?.applicationId
|
||||
PreferenceManager.saveApplicationId(applicationId, activity)
|
||||
Log.i("CreateAplctn response", response.body().toString())
|
||||
} else {
|
||||
PreferenceManager.saveApplicationId("12", activity)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user