static void Main(string[] args) { Console.WriteLine("Enter contract data: "); Console.Write("Number: "); int contractNumber = int.Parse(Console.ReadLine()); Console.Write("Date (dd/MM/yyyy): "); DateTime contractDate = DateTime.ParseExact(Console.ReadLine(), "dd/MM/yyyy", CultureInfo.InvariantCulture); Console.Write("Contract amount: "); double contractAmount = double.Parse(Console.ReadLine(), CultureInfo.InvariantCulture); Console.Write("Number of installments: "); int contractInstallments = int.Parse(Console.ReadLine()); CustContract contract = new CustContract(contractNumber, contractDate, contractAmount, contractInstallments); ContractInstallmentGenerateServices services = new ContractInstallmentGenerateServices(new PayPalPaymentOperator(1, 2)); services.InstallmentGenerate(contract); foreach (ContractInstallments installment in contract.InstallmentsList) { Console.WriteLine(installment); } }
public void InstallmentGenerate(CustContract contract) { for (int idx = 1; idx <= contract.Installments; idx++) { DateTime dueDate = contract.Date.AddMonths(idx); double installmentAmount = contract.Installments > 0 ? contract.Amount / contract.Installments : 0; installmentAmount += (_PaymentOperator.InterestAmount(installmentAmount) * idx); installmentAmount += _PaymentOperator.FeeAmount(installmentAmount); contract.AddInstallment(new ContractInstallments(dueDate, idx, installmentAmount)); } }