public NewLoanResponseModel CalculateNewLoan([FromBody] NewLoanRequestModel requestModel) { string cookieValue = Request.Cookies["Auth-Tst"]; return(_newLoanService.Calculate(requestModel, cookieValue)); }
public static IEnumerable <InstallmentForRepaymentPlanModel> GetDecreasingPlan(NewLoanRequestModel requestModel) { var actualPeriod = requestModel.Period - requestModel.GracePeriod; var principalInstallment = Math.Round(requestModel.LoanAmount / actualPeriod, 2); var lastPrincipalInstallment = requestModel.LoanAmount - (actualPeriod - 1) * principalInstallment; var installments = new Dictionary <int, InstallmentForRepaymentPlanModel>(); var startingFees = CalcHelpers.CalculateStartingFeesCost(requestModel.LoanAmount, requestModel.Fees); var zero = new InstallmentForRepaymentPlanModel { Id = 0, Date = DateTime.UtcNow.Date, MonthlyInstallment = 0, PrincipalInstallment = 0, InterestInstallment = 0, PrincipalBalance = requestModel.LoanAmount, Fees = startingFees, CashFlow = requestModel.LoanAmount - startingFees }; installments.Add(0, zero); for (var i = 1; i <= requestModel.Period; i++) { var interest = i <= requestModel.PromoPeriod ? requestModel.PromoInterest : requestModel.Interest; decimal currentPrincipalBalance; decimal interestInstallment; decimal currentPrincipalInstallment; if (i <= requestModel.GracePeriod) { currentPrincipalBalance = requestModel.LoanAmount; interestInstallment = CalcHelpers.CalculateInterestInstallment(interest, currentPrincipalBalance); currentPrincipalInstallment = 0; } else { currentPrincipalBalance = CalcHelpers.CalculatePrincipalBalance(installments[i - 1]); interestInstallment = CalcHelpers.CalculateInterestInstallment(interest, currentPrincipalBalance); currentPrincipalInstallment = i == requestModel.Period ? lastPrincipalInstallment : principalInstallment; } var monthlyInstallment = interestInstallment + currentPrincipalInstallment; var fees = CalcHelpers.CalculateFeesCost(i, currentPrincipalBalance, requestModel.Fees); installments.Add(i, new InstallmentForRepaymentPlanModel { Id = i, Date = DateTime.UtcNow.Date.AddDays(i), MonthlyInstallment = monthlyInstallment, PrincipalInstallment = currentPrincipalInstallment, InterestInstallment = interestInstallment, PrincipalBalance = currentPrincipalBalance, Fees = fees, CashFlow = -monthlyInstallment - fees }); } return(installments.Select(x => x.Value)); }