AA-24 | Shashidhara | Add kyc document upload repository and api

This commit is contained in:
Shashidhara Gopal
2019-11-14 13:56:40 +05:30
parent 66e474df5f
commit 8ae6fd2a5c
5 changed files with 62 additions and 3 deletions

View File

@@ -0,0 +1,24 @@
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 retrofit2.Response
import retrofit2.http.Multipart
import retrofit2.http.POST
import retrofit2.http.Part
import retrofit2.http.Path
interface KycDocumentUploadApi {
@Multipart
@POST("/loan-application-service/loan-applications/{id}/POA")
suspend fun submitPoaDocument(@Path("id") id: String, @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"
operator fun invoke(): KycDocumentUploadApi {
return RetrofitService.build(BASE_URL).create(KycDocumentUploadApi::class.java)
}
}
}

View File

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

View File

@@ -0,0 +1,9 @@
package com.navi.medici.androidCustomerApp.repositories
import com.navi.medici.androidCustomerApp.api.KycDocumentUploadApi
import okhttp3.MultipartBody
class KycDocumentUploadRepository(private val kycDocumentUploadApi: KycDocumentUploadApi) {
suspend fun submitPoaDocument(poaDocument: MultipartBody.Part) =
suspend { kycDocumentUploadApi.submitPoaDocument("4", poaDocument) }.invoke()
}

View File

@@ -3,7 +3,6 @@ package com.navi.medici.androidCustomerApp.ui.fragments
import android.content.Intent
import androidx.lifecycle.ViewModelProviders
import android.os.Bundle
import android.util.Log
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
@@ -72,7 +71,9 @@ class KycDocumentUploadFragment : Fragment() {
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == fileSelectCode) {
Log.i("file choose: $resultCode", data?.dataString.toString())
data?.data?.let {
viewModel.submitPoaDocument(it)
}
}
}

View File

@@ -1,12 +1,22 @@
package com.navi.medici.androidCustomerApp.viewModels
import android.net.Uri
import android.view.View
import android.widget.AdapterView
import androidx.lifecycle.ViewModel
import com.navi.medici.androidCustomerApp.api.KycDocumentUploadApi
import com.navi.medici.androidCustomerApp.databinding.KycDocumentUploadFragmentBinding
import com.navi.medici.androidCustomerApp.repositories.KycDocumentUploadRepository
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import okhttp3.MultipartBody
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)
fun onItemSelectedListener(binding: KycDocumentUploadFragmentBinding): AdapterView.OnItemSelectedListener {
return object : AdapterView.OnItemSelectedListener {
@@ -20,7 +30,17 @@ class KycDocumentUploadViewModel : ViewModel() {
if (position == 0) View.INVISIBLE else View.VISIBLE
}
override fun onNothingSelected(parent: AdapterView<*>?) {
override fun onNothingSelected(parent: AdapterView<*>?) {}
}
}
fun submitPoaDocument(uri: Uri) {
uri.path?.let {
val poaDocumentFile = File(it)
val poaDocument =
MultipartBody.Part.createFormData("poa_document", poaDocumentFile.name)
coroutineScope.launch {
kycDocumentUploadRepository.submitPoaDocument(poaDocument)
}
}
}