Example #1
0
 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));
 }
Example #2
0
        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);
        }
Example #3
0
        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"
            });
        }
Example #4
0
        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 }
            });
        }
Example #5
0
 public double GetPayablePrincipalAmount(int term, LoanTermType termType)
 {
     tenure = (termType == LoanTermType.Years) ? (term * 12) : term;
     return(Math.Round(currentEMI * tenure));
 }
Example #6
0
 public double GetPayableInterestAmount(int term, LoanTermType termType, double loanAmount)
 {
     tenure = (termType == LoanTermType.Years) ? (term * 12) : term;
     return(Math.Round((currentEMI * tenure) - loanAmount));
 }