Exemplo n.º 1
0
        public ActionResult Index(HomeLoanViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View(viewModel));
            }

            var request = new HomeLoanCreateRequest()
            {
                LoanViewModel = viewModel
            };

            var response = _homeLoanService.CreateHomeLoan(request);

            if (response.ServiceStatus != ServiceStatus.Success)
            {
                foreach (var message in response.ValidationMessages)
                {
                    ViewData.ModelState.AddModelError("ServerError", message.Message);
                }

                return(View(viewModel));
            }

            TempData["LoanSummary"] = response.LoanSummary;
            return(RedirectToAction("LoanDetails"));
        }
Exemplo n.º 2
0
        public HomeLoanCreateResponse CreateHomeLoan(HomeLoanCreateRequest request)
        {
            var response = new HomeLoanCreateResponse();

            var newHomeLoanResponse = _loanService.NewHomeLoan(new HomeLoanServiceRequest()
            {
                Amount             = request.LoanViewModel.Amount,
                InterestRate       = request.LoanViewModel.InterestRate,
                Term               = request.LoanViewModel.Term,
                FirstRepaymentDate = request.LoanViewModel.FirstRepaymentDate
            });

            if (newHomeLoanResponse.Status != ServiceStatus.Success)
            {
                response.ServiceStatus = ServiceStatus.Failure;

                foreach (var message in newHomeLoanResponse.BrokenBusinessRules)
                {
                    response.ValidationMessages.Add(new LoanValidationMessage()
                    {
                        Message = message.Description
                    });
                }
                return(response);
            }

            response.ServiceStatus = ServiceStatus.Success;
            response.LoanSummary   = new LoanSummaryViewModel
            {
                Term                 = newHomeLoanResponse.Loan.Term,
                InterestRate         = newHomeLoanResponse.Loan.InterestRatePercentage,
                LoanAmount           = newHomeLoanResponse.Loan.Principal,
                TotalInterestAmount  = newHomeLoanResponse.PaymentPlan.Sum(t => t.InterestPaidAmount),
                TotalRepaymentAmount = newHomeLoanResponse.TotalRepaymentAmount,
                ScheduledPayments    = newHomeLoanResponse.PaymentPlan.PaymentPlanToScheduledPaymentPlanViewModel(),
                NumberOfRepayments   = newHomeLoanResponse.PaymentPlan != null ? newHomeLoanResponse.PaymentPlan.Count : 0
            };

            return(response);
        }