AA-24 | Shashidhara | WIP: API Integration

This commit is contained in:
Shashidhara Gopal
2019-11-14 18:54:59 +05:30
parent 194194b68f
commit b55bbac1ee
24 changed files with 179 additions and 91 deletions

View File

@@ -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 {

View File

@@ -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)
}

View File

@@ -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 {

View File

@@ -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")

View File

@@ -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 {

View File

@@ -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")

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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?
) {
}
)

View File

@@ -0,0 +1,6 @@
package com.navi.medici.androidCustomerApp.models.request
data class LoanApplicationRequest(
val personId: String,
val productId: String
)

View File

@@ -0,0 +1,3 @@
package com.navi.medici.androidCustomerApp.models.response
data class UpdateLoanApplicationResponse(val success: Boolean?)

View File

@@ -23,7 +23,7 @@ object PreferenceManager {
fun getApplicationId(context: Context): String? {
return PreferenceWrapper.getStringPreference(
context,
PreferenceNames.CUSTOMER_ID
PreferenceNames.LOAN_APPLICATION_ID
)
}

View File

@@ -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()
}

View File

@@ -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()
}

View File

@@ -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()
}

View File

@@ -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()
}

View File

@@ -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) {

View File

@@ -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)
}
}

View File

@@ -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()
})

View File

@@ -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
}
}

View File

@@ -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
)
}
}
}

View File

@@ -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()")

View File

@@ -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())
}
}
}

View File

@@ -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)
}
}
}
}