Shashidhara | Add round off strategy for emi calendar [ch4814] (#328)

This commit is contained in:
Shashidhara Gopal
2020-03-10 16:37:17 +05:30
committed by GitHub Enterprise
parent 76bb3e50e6
commit 95d58f45f3
4 changed files with 16 additions and 20 deletions

View File

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

View File

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

View File

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

View File

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