Shashidhara | Add round off strategy for emi calendar [ch4814] (#328)
This commit is contained in:
committed by
GitHub Enterprise
parent
76bb3e50e6
commit
95d58f45f3
@@ -112,7 +112,7 @@ dependencies {
|
||||
|
||||
//Digio: for adhaar verification
|
||||
implementation project(":digio-kyc-1.0.0")
|
||||
// implementation 'com.squareup.okhttp3:okhttp:4.2.1'
|
||||
// implementation 'com.squareup.okhttp3:okhttp:4.2.1'
|
||||
|
||||
|
||||
// AndroidJUnitRunner and JUnit Rules
|
||||
|
||||
@@ -155,7 +155,7 @@ class FormSliderView(context: Context, attrs: AttributeSet) : LinearLayout(conte
|
||||
|
||||
fun updateSliderValue(progress: Int) {
|
||||
val emis = emiTenureAmountPair
|
||||
if (seekbarInterval != null && emis != null && emis.size > 0) {
|
||||
if (seekbarInterval != null && emis != null && progress in 0..emis.size.minus(1)) {
|
||||
sliderValue = emis[progress].second.toInt()
|
||||
listener?.updateEmiTenure(emis[progress].first)
|
||||
return
|
||||
@@ -227,12 +227,13 @@ class FormSliderView(context: Context, attrs: AttributeSet) : LinearLayout(conte
|
||||
binding.seekbar.max = discretePoints
|
||||
}
|
||||
|
||||
fun updateSlider(emis: MutableList<Pair<Int, BigDecimal>>) {
|
||||
fun updateSlider(emis: MutableList<Pair<Int, BigDecimal>>, setProgress: Boolean = false) {
|
||||
this.emiTenureAmountPair = emis
|
||||
val max = emis.size.dec()
|
||||
val progress = max.div(2)
|
||||
|
||||
updateMax(max)
|
||||
if (!setProgress) return
|
||||
setProgressTo(progress)
|
||||
updateSliderValue(progress)
|
||||
updateDecorationText()
|
||||
|
||||
@@ -6,7 +6,6 @@ import android.text.TextUtils
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.ViewTreeObserver
|
||||
import android.widget.SeekBar
|
||||
import androidx.lifecycle.ViewModelProviders
|
||||
import com.navi.R
|
||||
@@ -41,9 +40,9 @@ import com.navi.utils.observeNullable
|
||||
import org.joda.money.BigMoney
|
||||
import org.joda.money.CurrencyUnit
|
||||
import java.math.BigDecimal
|
||||
import java.math.RoundingMode
|
||||
|
||||
class LoanDetailsFragment : BaseFragment(), View.OnClickListener, LoanDetailsListener,
|
||||
ViewTreeObserver.OnGlobalLayoutListener {
|
||||
class LoanDetailsFragment : BaseFragment(), View.OnClickListener, LoanDetailsListener {
|
||||
private lateinit var binding: FragmentLoanDetailsBinding
|
||||
private val loanDetailsVM by lazy { ViewModelProviders.of(this).get(LoanDetailsVM::class.java) }
|
||||
private var fragmentInteractionListener: FragmentInteractionListener? = null
|
||||
@@ -268,6 +267,8 @@ class LoanDetailsFragment : BaseFragment(), View.OnClickListener, LoanDetailsLis
|
||||
|
||||
params.emiTenureText.text = offer.tenure?.max?.run { "$value $unit" }
|
||||
params.annualInterestText.text = getString(R.string.percentage_format, offer.rateOfInterest)
|
||||
|
||||
updateEmiSlider(true)
|
||||
fetchFeeDetails()
|
||||
updateNetLoanAmount()
|
||||
}
|
||||
@@ -292,11 +293,8 @@ class LoanDetailsFragment : BaseFragment(), View.OnClickListener, LoanDetailsLis
|
||||
}
|
||||
|
||||
override fun onStopTrackingTouch(seekBar: SeekBar?) {
|
||||
binding.loanParametersLay.emiTenureText.viewTreeObserver.addOnGlobalLayoutListener(
|
||||
this@LoanDetailsFragment
|
||||
)
|
||||
if (!isEditable) return
|
||||
updateEmiSlider()
|
||||
updateEmiSlider(isEditable)
|
||||
fetchFeeDetails()
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -386,8 +384,8 @@ class LoanDetailsFragment : BaseFragment(), View.OnClickListener, LoanDetailsLis
|
||||
getString(R.string.tenure_with_month, tenureInMonths)
|
||||
}
|
||||
|
||||
override fun updateEmiSlider() {
|
||||
binding.loanConfigLay.emiAmountSliderView.updateSlider(calculateEmis())
|
||||
override fun updateEmiSlider(setProgress: Boolean) {
|
||||
binding.loanConfigLay.emiAmountSliderView.updateSlider(calculateEmis(), setProgress)
|
||||
}
|
||||
|
||||
private fun calculateEmis(): MutableList<Pair<Int, BigDecimal>> {
|
||||
@@ -406,17 +404,14 @@ class LoanDetailsFragment : BaseFragment(), View.OnClickListener, LoanDetailsLis
|
||||
offer?.rateOfInterest?.let { BigDecimal.valueOf(it) },
|
||||
tenure
|
||||
).calculate()
|
||||
if (emi.amount.toDouble() in minEmi..maxEmi) emis.add(Pair(tenure, emi.amount))
|
||||
val roundedOffEmi = emi.amount
|
||||
.divide(BigDecimal.ONE).setScale(0, RoundingMode.HALF_UP).multiply(BigDecimal.ONE)
|
||||
if (roundedOffEmi.toDouble() in minEmi..maxEmi) emis.add(Pair(tenure, roundedOffEmi))
|
||||
}
|
||||
|
||||
return emis
|
||||
}
|
||||
|
||||
override fun onGlobalLayout() {
|
||||
binding.loanParametersLay.emiTenureText.viewTreeObserver.removeOnGlobalLayoutListener(this)
|
||||
fetchFeeDetails()
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val TAG = "LOAN_DETAILS_FRAGMENT"
|
||||
}
|
||||
|
||||
@@ -3,5 +3,5 @@ package com.navi.getloan.loandetails.listeners
|
||||
interface LoanDetailsListener {
|
||||
fun updateNetLoanAmount()
|
||||
fun updateEmiTenure(tenureInMonths: Int)
|
||||
fun updateEmiSlider()
|
||||
fun updateEmiSlider(setProgress: Boolean = false)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user