TP-40437 | added api to provide url for downloading Cash Loan Statement (#7761)
Co-authored-by: shreyansuraj <shreyansu.raj@navi.com>
This commit is contained in:
@@ -23,6 +23,7 @@ import com.navi.base.utils.isNotNullAndNotEmpty
|
||||
import com.navi.base.utils.isNull
|
||||
import com.navi.base.utils.orFalse
|
||||
import com.navi.common.ui.fragment.BaseFragment
|
||||
import com.navi.common.utils.observeNonNull
|
||||
import com.navi.common.utils.replaceLayout
|
||||
import com.navi.design.utils.getNaviDrawable
|
||||
import com.navi.insurance.util.disableView
|
||||
@@ -154,6 +155,8 @@ class DetailsFragment : BaseFragment(), View.OnClickListener, WidgetCallback {
|
||||
}
|
||||
|
||||
if (loanApplicationDetails?.loanType == Constants.TYPE_PERSONAL_LOAN) {
|
||||
binding.loanAccountStatementView.loanAccountStatementLayout.visibility = View.VISIBLE
|
||||
binding.loanAccountStatementView.lasDownloadIv.setOnClickListener(this)
|
||||
loanApplicationDetails?.loanAgreementUri?.let {
|
||||
binding.loanAgreementView.loanAgreementLayout.visibility = View.VISIBLE
|
||||
binding.loanAgreementView.downloadIv.setOnClickListener(this)
|
||||
@@ -162,11 +165,6 @@ class DetailsFragment : BaseFragment(), View.OnClickListener, WidgetCallback {
|
||||
binding.loanSanctionView.loanSanctionLayout.visibility = View.VISIBLE
|
||||
binding.loanSanctionView.sanctionDownloadIv.setOnClickListener(this)
|
||||
}
|
||||
loanApplicationDetails?.loanAccountStatementUri?.let {
|
||||
binding.loanAccountStatementView.loanAccountStatementLayout.visibility =
|
||||
View.VISIBLE
|
||||
binding.loanAccountStatementView.lasDownloadIv.setOnClickListener(this)
|
||||
}
|
||||
if (loanApplicationDetails?.interestCertificateFinancialYears.isNullOrEmpty().not()) {
|
||||
binding.interestCertificateView.interestCertificateLayout.visibility = View.VISIBLE
|
||||
binding.interestCertificateView.icDownloadIv.setOnClickListener(this)
|
||||
@@ -402,6 +400,18 @@ class DetailsFragment : BaseFragment(), View.OnClickListener, WidgetCallback {
|
||||
hideLoader()
|
||||
it?.let { downloadInterestCertificate(it.uri) }
|
||||
}
|
||||
detailsVM.cashLoanSignatureURI.observeNonNull(viewLifecycleOwner) { cashLoanSignatureUriDetail ->
|
||||
hideLoader()
|
||||
cashLoanSignatureUriDetail.downloadCta?.let { downLoadCtaDetails ->
|
||||
downLoadCtaDetails.parameters?.find { it.key == URL }?.value?.let { downLoadUri ->
|
||||
downLoadCtaDetails.downloadFileName?.let { downLoadFileName ->
|
||||
downloadLoanAccountStatement(
|
||||
downLoadUri, downLoadFileName
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun loanDetailsBinder(details: LoanApplicationDetails): LoanDetailsBinder {
|
||||
@@ -439,6 +449,13 @@ class DetailsFragment : BaseFragment(), View.OnClickListener, WidgetCallback {
|
||||
}
|
||||
}
|
||||
|
||||
private fun fetchCashLoanSignatureDownloadURI() {
|
||||
loanApplicationDetails?.loanAccountNumber?.let { loanAccountNumber ->
|
||||
showLoader()
|
||||
detailsVM.fetchCashLoanSignatureDownloadURI(loanAccountNumber)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onClick(v: View?) {
|
||||
when (v?.id) {
|
||||
R.id.download_iv -> downloadLoanAgreement()
|
||||
@@ -446,7 +463,7 @@ class DetailsFragment : BaseFragment(), View.OnClickListener, WidgetCallback {
|
||||
binding.loanForecloseBtn.id -> loanForecloseClickHandle()
|
||||
R.id.ndc_download_iv -> downloadLoanNDC()
|
||||
R.id.ic_download_iv -> showYearSelectionDialog()
|
||||
R.id.las_download_iv -> downloadLoanAccountStatement()
|
||||
R.id.las_download_iv -> fetchCashLoanSignatureDownloadURI()
|
||||
R.id.gst_download_iv -> downloadGSTInvoice()
|
||||
R.id.life_insurance_download_iv -> downloadLifeInsurance()
|
||||
R.id.general_insurance_download_iv -> downloadGeneralInsurance()
|
||||
@@ -523,16 +540,16 @@ class DetailsFragment : BaseFragment(), View.OnClickListener, WidgetCallback {
|
||||
}
|
||||
}
|
||||
|
||||
private fun downloadLoanAccountStatement() {
|
||||
private fun downloadLoanAccountStatement(
|
||||
cashLoanSignatureURI: String, downloadFileName: String
|
||||
) {
|
||||
NaviAnalytics.naviAnalytics.LoanApplicationDetail().onLASDownloadClick(widgetId)
|
||||
loanApplicationDetails?.loanAccountStatementUri?.let {
|
||||
startDownload(
|
||||
it,
|
||||
LAS_PDF_FILE_NAME,
|
||||
if (widgetId == PERSONAL_LOAN) NaviAnalytics.PL_LOAN_ACCOUNT_STATEMENT_DOWNLOAD_FAIL
|
||||
else NaviAnalytics.HL_LOAN_ACCOUNT_STATEMENT_DOWNLOAD_FAIL
|
||||
)
|
||||
}
|
||||
startDownload(
|
||||
cashLoanSignatureURI,
|
||||
downloadFileName,
|
||||
if (widgetId == PERSONAL_LOAN) NaviAnalytics.PL_LOAN_ACCOUNT_STATEMENT_DOWNLOAD_FAIL
|
||||
else NaviAnalytics.HL_LOAN_ACCOUNT_STATEMENT_DOWNLOAD_FAIL
|
||||
)
|
||||
}
|
||||
|
||||
private fun downloadGSTInvoice() {
|
||||
@@ -635,18 +652,16 @@ class DetailsFragment : BaseFragment(), View.OnClickListener, WidgetCallback {
|
||||
|
||||
companion object {
|
||||
const val TAG = "DETAILS_FRAGMENT"
|
||||
const val LOAN_SANCTION_LETTER_PDF = "navi_loan_sanction_letter.pdf"
|
||||
const val LOAN_APPLICATION_DETAILS = "LOAN_APPLICATION_DETAILS"
|
||||
const val WIDGET_ID = "WIDGET_ID"
|
||||
|
||||
const val LOAN_AGREEMENT_PDF_FILE_NAME = "navi_loan_agreement"
|
||||
const val LOAN_SANCTION_PDF_LETTER_FILE_NAME = "navi_loan_sanction_letter"
|
||||
private const val LOAN_NDC_PDF_FILE_NAME = "navi_loan_ndc"
|
||||
private const val IC_PDF_FILE_NAME = "navi_interest_certificate"
|
||||
private const val LAS_PDF_FILE_NAME = "navi_loan_account_statement"
|
||||
private const val GST_PDF_FILE_NAME = "navi_gst_invoice"
|
||||
private const val LIFE_INSURANCE_PDF_FILE_NAME = "navi_life_insurance"
|
||||
private const val GENERAL_INSURANCE_PDF_FILE_NAME = "navi_general_insurance"
|
||||
private const val URL = "url"
|
||||
|
||||
fun newInstance(details: LoanApplicationDetails?, widgetId: String?) =
|
||||
DetailsFragment().apply {
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.naviapp.dashboard.loanapplicationdetails.models
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
|
||||
data class CashLoanSignatureUriDetail(
|
||||
@SerializedName("downloadCta") val downloadCta: DownLoadCtaDetails? = null
|
||||
)
|
||||
|
||||
data class DownLoadCtaDetails(
|
||||
@SerializedName("parameters") val parameters: List<Parameter>? = null,
|
||||
@SerializedName("title") val downloadFileName: String? = null
|
||||
)
|
||||
|
||||
data class Parameter(
|
||||
@SerializedName("key") val key: String? = null,
|
||||
@SerializedName("value") val value: String? = null
|
||||
)
|
||||
@@ -21,4 +21,7 @@ class LoanApplicationDetailsRepository : ResponseCallback() {
|
||||
|
||||
suspend fun changeBankDetails(loanApplicationId: String) =
|
||||
apiResponseCallback(retrofitService().changeBankDetails(loanApplicationId))
|
||||
|
||||
suspend fun fetchCashLoanSignatureDownloadURI(loanAccountNumber:String) =
|
||||
apiResponseCallback(retrofitService().fetchCashLoanSignatureDownloadURI(loanAccountNumber))
|
||||
}
|
||||
|
||||
@@ -10,7 +10,9 @@ package com.naviapp.dashboard.loanapplicationdetails.viewmodels
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.navi.common.utils.isValidResponse
|
||||
import com.navi.common.viewmodel.BaseVM
|
||||
import com.naviapp.dashboard.loanapplicationdetails.models.CashLoanSignatureUriDetail
|
||||
import com.naviapp.dashboard.loanapplicationdetails.models.InterestCertificateURIDetail
|
||||
import com.naviapp.dashboard.loanapplicationdetails.models.YearDetails
|
||||
import com.naviapp.dashboard.loanapplicationdetails.repositories.LoanApplicationDetailsRepository
|
||||
@@ -22,6 +24,10 @@ class DetailsVM(private val repository: LoanApplicationDetailsRepository = LoanA
|
||||
val interestCertificateURI: LiveData<InterestCertificateURIDetail>
|
||||
get() = _interestCertificateURI
|
||||
|
||||
private val _cashLoanSignatureURI = MutableLiveData<CashLoanSignatureUriDetail>()
|
||||
val cashLoanSignatureURI: LiveData<CashLoanSignatureUriDetail>
|
||||
get() = _cashLoanSignatureURI
|
||||
|
||||
fun fetchInterestCertificateDownloadURI(yearDetails: YearDetails) {
|
||||
viewModelScope.launch {
|
||||
val response = repository.fetchInterestCertificateDownloadURI(yearDetails)
|
||||
@@ -33,4 +39,15 @@ class DetailsVM(private val repository: LoanApplicationDetailsRepository = LoanA
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun fetchCashLoanSignatureDownloadURI(loanAccountNumber: String) {
|
||||
viewModelScope.launch {
|
||||
val response = repository.fetchCashLoanSignatureDownloadURI(loanAccountNumber)
|
||||
if (response.isValidResponse()) {
|
||||
_cashLoanSignatureURI.value = response.data
|
||||
} else {
|
||||
setErrorData(response.errors, response.error)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1131,6 +1131,11 @@ interface RetrofitService {
|
||||
@Body yearDetails: YearDetails
|
||||
): Response<GenericResponse<InterestCertificateURIDetail>>
|
||||
|
||||
@POST("/loan-accounts/{loanAccountNumber}/initiate-loan-account-statement-generation")
|
||||
suspend fun fetchCashLoanSignatureDownloadURI(
|
||||
@Path("loanAccountNumber") loanAccountNumber: String
|
||||
): Response<GenericResponse<CashLoanSignatureUriDetail>>
|
||||
|
||||
@GET("/customer-service/customers/me/vkyc-status")
|
||||
suspend fun fetchVideoKycStatus(): Response<GenericResponse<VideoKycStatusResponse>>
|
||||
|
||||
|
||||
@@ -7,8 +7,7 @@
|
||||
-->
|
||||
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/loan_account_statement_layout"
|
||||
@@ -16,8 +15,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
app:cardCornerRadius="@dimen/card_corner_half_radius"
|
||||
app:cardElevation="0dp"
|
||||
tools:visibility="visible">
|
||||
app:cardElevation="0dp">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
@@ -40,7 +38,7 @@
|
||||
android:layout_height="@dimen/layout_dp_16"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:src="@drawable/ic_download_svg"
|
||||
android:tint="@color/red" />
|
||||
app:tint="@color/red" />
|
||||
|
||||
</RelativeLayout>
|
||||
</androidx.cardview.widget.CardView>
|
||||
|
||||
Reference in New Issue
Block a user