public ActionResult <IEnumerable <LoanPayment> > CalculateLoan(LoanCalculateRequest request) { _logger.LogInformation($"Received request to calculate loan payments"); IEnumerable <LoanPayment> payments; try { payments = _loanService.CalculateLoanPayments(request.LoanId, request.LoanAmount, request.LoanYearsDuration); } catch (ArgumentException) { return(BadRequest()); } catch (NotFoundException) { return(NotFound()); } return(Ok(payments)); }
public LoanCalculateResult CalcDecreaseMonthLoan(LoanCalculateRequest request) { LoanCalculateResult result = new LoanCalculateResult(); DecreasingMonthlyLoan loanType = new DecreasingMonthlyLoan(); int ratesAmount = request.DurationInYears * loanType.RatesPerYear; float capitalRateAmount = request.Amount / ratesAmount; for (int i = 0; i < ratesAmount; i++) { float amountYetToPay = request.Amount - (capitalRateAmount * i); float generatedInterest = amountYetToPay * (1f / loanType.RatesPerYear) * loanType.InterestPerYear; float rateAmount = capitalRateAmount + generatedInterest; result.LoanRates.Add(rateAmount); // result.LoanCost = result.LoanCost + rateAmount; } result.LoanCost = result.LoanRates.Sum(); return(result); }
public LoanCalculateResult CalcDecreaseMonthLoan([FromBody] LoanCalculateRequest request) { return(loanService.CalcDecreaseMonthLoan(request)); }