Exemple #1
0
        public RedirectToRouteResult ReloadAgreementsModel()
        {
            var agreementsModelBuilder = new AgreementsModelBuilder(this.loanLegalRepo, this.context);
            var loans = this.loanRepository.GetAll();

            foreach (var loan in loans)
            {
                var agreement = agreementsModelBuilder.ReBuild(loan.Customer, loan);
                loan.AgreementModel = JsonConvert.SerializeObject(agreement);
            }             // for each

            return(RedirectToAction("Index", "GenerateAgreements", new { Area = "Underwriter" }));
        }         // ReloadAgreementsModel
Exemple #2
0
 public AgreementController(
     AgreementRenderer agreementRenderer,
     IEzbobWorkplaceContext context,
     AgreementsModelBuilder builder,
     LoanBuilder loanBuilder
     )
 {
     this.agreementRenderer = agreementRenderer;
     this.context           = context;
     this.builder           = builder;
     this.customer          = this.context.Customer;
     this.loanBuilder       = loanBuilder;
     this.serviceClient     = new ServiceClient();
 }        // constructor
Exemple #3
0
        }         // Calculate

        private LoanOffer CalculateLoan(int amount, int loanType, int repaymentPeriod)
        {
            if (!this.context.Customer.CreditSum.HasValue)
            {
                log.Warn(
                    "Cannot calculate loan ({0} of type {1} for {2} repayments) for customer {3}: credit sum is null.",
                    amount.ToString("C0"),
                    loanType,
                    repaymentPeriod,
                    this.context.Customer.Stringify()
                    );
                return(null);
            }             // if

            if (this.context.Customer.Status != Status.Approved)
            {
                log.Warn(
                    "Cannot calculate loan ({0} of type {1} for {2} repayments) for customer {3}: customer status is '{4}'.",
                    amount.ToString("C0"),
                    loanType,
                    repaymentPeriod,
                    this.context.Customer.Stringify(),
                    this.context.Customer.Status
                    );

                return(null);
            }             // if

            var creditSum = this.context.Customer.CreditSum.Value;

            this.context.Customer.ValidateOfferDate();

            if (amount < 0)
            {
                amount = (int)Math.Floor(creditSum);
            }

            if (amount > creditSum)
            {
                log.Warn(
                    "Attempt to calculate schedule for amount({0}) bigger than credit sum value({1})",
                    amount,
                    creditSum
                    );
                amount = (int)Math.Floor(creditSum);
            }             // if

            var cr = this.context.Customer.LastCashRequest;

            if (this.context.Customer.IsLoanTypeSelectionAllowed == 1)
            {
                var oDBHelper = ObjectFactory.GetInstance <IDatabaseDataHelper>() as DatabaseDataHelper;

                if (oDBHelper != null)
                {
                    cr.LoanType = oDBHelper.LoanTypeRepository.Get(loanType);
                }
            }             // if

            if (cr.IsCustomerRepaymentPeriodSelectionAllowed)
            {
                cr.RepaymentPeriod = repaymentPeriod;
            }

            BuiltLoan builtLoan = this.loanBuilder.BuildLoan(cr, amount, DateTime.UtcNow, cr.RepaymentPeriod);

            var schedule = builtLoan.Loan.Schedule;
            var apr      = this.aprCalc.Calculate(amount, schedule, builtLoan.Loan.SetupFee, builtLoan.Loan.Date);

            var b         = new AgreementsModelBuilder(this.loanLegalRepo);
            var agreement = b.Build(this.context.Customer, amount, builtLoan.Loan);

            // TODO calculate offer
            log.Debug("calculate offer for customer {0}", this.context.Customer.Id);

            var loanOffer = LoanOffer.InitFromLoan(builtLoan.Loan, apr, agreement, cr);

            loanOffer.ManualSetupFeePercent = builtLoan.ManualSetupFeePercent;
            loanOffer.BrokerFeePercent      = builtLoan.BrokerFeePercent;

            return(loanOffer);
        }         // CalculateLoan