private CreditCalculatorResultVM GetResultsForModel(CreditCalcResults res)
        {
            CreditCalculatorResultVM mRes = new CreditCalculatorResultVM();

            mRes.AnnualPercentageRate = res.AnnualPercentageRate;

            mRes.TotalFees         = res.TotalFees;
            mRes.TotalInstallments = res.TotalInstallments;
            mRes.TotalInstallmentsWithTotalFeesAndRates = res.TotalInstallmentsWithTotalFeesAndRates;
            mRes.TotalRates          = res.TotalRates;
            mRes.MonthlyInstallments = new List <MonthlyResultVM>();

            foreach (var m in res.MonthlyInstallments)
            {
                MonthlyResultVM mcalc = new MonthlyResultVM();
                mcalc.Date                 = m.Date;
                mcalc.Fees                 = m.Fees;
                mcalc.Installment          = m.Installment;
                mcalc.PrincipalRemainder   = m.PrincipalRemainder;
                mcalc.PrinicpalInstallment = m.PrinicpalInstallment;
                mcalc.RateInstallment      = m.RateInstallment;
                mcalc.RowNumber            = m.RowNumber;
                mcalc.TotalInstallment     = m.TotalInstallment;
                mRes.MonthlyInstallments.Add(mcalc);
            }

            return(mRes);
        }
        public ActionResult FinanceCalculator(CreditCalculatorParamsVM model)
        {
            if (!model.IsModelValid(ModelState))
            {
                return(PartialView("_InvalidCreditParamsPartial", model));
            }

            var parameters = GetParamsFromModel(model);
            CreditCalcResults        creditResult          = this.calculatorService.CalculateCredit(parameters);
            CreditCalculatorResultVM creditViewModelResult = GetResultsForModel(creditResult);

            return(PartialView("_CreditResultsPartial", creditViewModelResult));
        }