public override Task InitializeViewModelAsync(object navigationData) { paymentDetails = navigationData as Dictionary <string, object>; loanAmount = (double)paymentDetails["loanAmount"]; interest = (double)paymentDetails["interest"]; term = (int)paymentDetails["term"]; termType = (LoanTermType)paymentDetails["termType"]; emiAmount = (double)paymentDetails["emi"]; return(base.InitializeViewModelAsync(navigationData)); }
public double CalculateEMI(double loanAmount, double interest, int term, LoanTermType termType) { interestFactor = Convert.ToDouble((interest / 12) / 100); tenure = (termType == LoanTermType.Years) ? (term * 12) : term; if (!interestFactor.Equals(0)) { double emprical = Math.Pow(1 + interestFactor, tenure); currentEMI = (loanAmount * interestFactor * emprical) / (emprical - 1); } else { currentEMI = loanAmount / tenure; } return(currentEMI); }
public void ShareLoanDetails(double loanAmount, double interest, int term, LoanTermType termType, double emiAmount, double totalPricipalAmount, double totalInterstAmount) { string currencySymbol = CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol; string loanTermType = termType.Equals(LoanTermType.Years) ? "Years" : "Months"; string principalAmount = "Principal Loan Amount : " + currencySymbol + " " + loanAmount.ToString("N2", CultureInfo.InvariantCulture) + "\n"; string interestPercent = "Interest Rate (in percentage): " + interest.ToString("N2", CultureInfo.InvariantCulture) + "p/a \n"; string loanTerm = "Loan Term : " + term + " " + loanTermType + "\n\n"; string emiAmountDetails = "Monthly Payment (EMI) : " + currencySymbol + " " + emiAmount.ToString("N2", CultureInfo.InvariantCulture) + "\n"; string totalAmount = "Total Interest Payment : " + currencySymbol + " " + totalInterstAmount.ToString("N2", CultureInfo.InvariantCulture) + "\n"; string payableAmount = "Total Amount (Principal + Interest): " + currencySymbol + " " + totalPricipalAmount.ToString("N2", CultureInfo.InvariantCulture) + "\n"; DataTransfer.RequestAsync(new ShareTextRequest { Subject = "Loan Details", Text = "Loan Details" + "\n\n" + principalAmount + interestPercent + loanTerm + emiAmountDetails + totalAmount + payableAmount, Title = "Loan Details" }); }
public Dictionary <string, object> GetAmortizationDetails(double interest, double emi, double loanAmount, int term, LoanTermType termType, DateTime paymentStartMonth) { DateTime date = paymentStartMonth; double beginBalance, endBalance, currentInterest, totalEmiAmount = 0, totalPrincipal = 0, totalInterest = 0; double emiPaidPerYear = 0, prncPaidPerYear = 0, totalInterestYear = 0, currentPrinicipal = loanAmount; interestFactor = Convert.ToDouble((interest / 12) / 100); tenure = (termType == LoanTermType.Years) ? (term * 12) : term; monthlyPaymentDetails = new ObservableCollection <MonthlyPaymentDetail>(); yearlyPaymentDetails = new ObservableCollection <YearlyPaymentDetail>(); for (int i = 0; i < tenure; i++) { currentInterest = !interestFactor.Equals(0) ? (currentPrinicipal * interestFactor) : loanAmount; totalInterest += currentInterest; totalEmiAmount += emi; totalPrincipal += emi - currentInterest; endBalance = currentPrinicipal - (emi - currentInterest); emiPaidPerYear += emi; prncPaidPerYear += emi - currentInterest; totalInterestYear += currentInterest; monthlyPaymentDetails.Add( new MonthlyPaymentDetail { Principal = Math.Round(emi - currentInterest), Interest = Math.Round(currentInterest), Balance = Math.Round(endBalance), Payment = Math.Round(emi), Month = new DateTime(date.Year, date.Month, date.Day) }); if (i == 0 || date.Month == 1) { beginBalance = currentPrinicipal; } if (date.Month == 12 || i.Equals(tenure - 1)) { yearlyPaymentDetails.Add( new YearlyPaymentDetail { Principal = Math.Round(prncPaidPerYear), Interest = Math.Round(totalInterestYear), Balance = Math.Round(endBalance), Payment = Math.Round(emiPaidPerYear), Year = new DateTime(date.Year, date.Month, date.Day) }); emiPaidPerYear = 0; prncPaidPerYear = 0; totalInterestYear = 0; } currentPrinicipal = endBalance; if (i < tenure - 1) { date = date.AddMonths(1); } } return(new Dictionary <string, object> { { "monthlyDetails", monthlyPaymentDetails }, { "yearlyDetails", yearlyPaymentDetails } }); }
public double GetPayablePrincipalAmount(int term, LoanTermType termType) { tenure = (termType == LoanTermType.Years) ? (term * 12) : term; return(Math.Round(currentEMI * tenure)); }
public double GetPayableInterestAmount(int term, LoanTermType termType, double loanAmount) { tenure = (termType == LoanTermType.Years) ? (term * 12) : term; return(Math.Round((currentEMI * tenure) - loanAmount)); }