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()); }
/// <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); }