コード例 #1
0
        public async Task <IActionResult> GenerateInstallments([FromBody] Loan loanModel)
        {
            PaymentGeneratorsFactory factory = new PaymentGeneratorsFactory();

            _paymentGenerator = factory.CreatePaymentGenerator(PaymentStrategy.DecreasingInstallments, loanModel);

            var installments = await Task.FromResult(_paymentGenerator.GenerateInstallments(loanModel));

            if (installments.Any())
            {
                return(Ok(installments));
            }

            return(NoContent());
        }
コード例 #2
0
        /// <summary>
        /// Create instance of generator dependent on payment strategy
        /// </summary>
        /// <param name="paymentStrategy"><see cref="PaymentStrategy"/></param>
        /// <param name="loan"><see cref="Loan"/></param>
        /// <returns></returns>
        public virtual IPaymentGenerator CreatePaymentGenerator(PaymentStrategy paymentStrategy, Loan loan)
        {
            IPaymentGenerator gateway = null;

            switch (paymentStrategy)
            {
            case PaymentStrategy.DecreasingInstallments:
                gateway = new DecreasingMonthlyGenerator();
                break;

            default:
                break;
            }
            return(gateway);
        }