public ICommandResult Handle(LiberacaoCreditoImobiliarioCommand command) { command.Validate(); if (command.Invalid) { AddNotifications(command); return(new CommandResult(false, "Não foi possível a Liberação de Crédito Imobiliário", null)); } //Validacoes if (!decimal.TryParse(command.ValorCredito, out decimal valorCredito)) { AddNotification("LiberacaoCreditoFisicaCommand.ValorCredito", "O valor de crédito é inválido"); } if (!int.TryParse(command.Parcelas, out int parcelas)) { AddNotification("LiberacaoCreditoFisicaCommand.Parcelas", "O número de parcelas é inválido"); } if (!DateTime.TryParse(command.PrimeiroVencimento, out DateTime primeiroVencimento)) { AddNotification("LiberacaoCreditoFisicaCommand.PrimeiroVencimento", "A data do primeiro vencimento é inválida"); } if (Invalid) { return(new CommandResult(false, "Não foi possível a Liberação de Crédito Imobiliário", null)); } //Gerar a Entidade de Liberacao de Credito var imobiliario = new Imobiliario(valorCredito, parcelas, primeiroVencimento); //Aprovar ou Reprovar imobiliario.Aprovar(); //Calcular Juros imobiliario.CalcularJuros(); if (imobiliario.Invalid) { return(new CommandResult(false, "Não foi possível calcular o Juros de Crédito Imobiliário", null)); } return(new CommandResult(true, $"Status do crédito: {imobiliario.StatusString} | Valor total com juros: {imobiliario.ValorTotalComJurosString} | Valor do juros: {imobiliario.ValorJurosString} ", imobiliario)); }
static void Main(string[] args) { System.Console.Write("Digite o valor do crédito:"); string valorCredito = System.Console.ReadLine(); System.Console.Write("Digite o tipo de crédito (1 - Direto | 2 - Consignado | 3 - Pessoa Jurídica | 4 - Pessoa Física | 5 - Imobiliário):"); string tipoCredito = System.Console.ReadLine(); System.Console.Write("Digite a quantidade de parcelas:"); string parcelas = System.Console.ReadLine(); System.Console.Write("Digite a data do primeiro vencimento:"); string primeiroVencimento = System.Console.ReadLine(); var handler = new LiberacaoCreditoHandler(); if (tipoCredito.Contains("1")) { var command = new LiberacaoCreditoDiretoCommand(); command.ValorCredito = valorCredito; command.Parcelas = parcelas; command.PrimeiroVencimento = primeiroVencimento; var result = (CommandResult)handler.Handle(command); System.Console.Write(result.Message); } else if (tipoCredito.Contains("2")) { var command = new LiberacaoCreditoConsignadoCommand(); command.ValorCredito = valorCredito; command.Parcelas = parcelas; command.PrimeiroVencimento = primeiroVencimento; var result = (CommandResult)handler.Handle(command); System.Console.Write(result.Message); } else if (tipoCredito.Contains("3")) { var command = new LiberacaoCreditoJuridicaCommand(); command.ValorCredito = valorCredito; command.Parcelas = parcelas; command.PrimeiroVencimento = primeiroVencimento; var result = (CommandResult)handler.Handle(command); System.Console.Write(result.Message); } else if (tipoCredito.Contains("4")) { var command = new LiberacaoCreditoFisicaCommand(); command.ValorCredito = valorCredito; command.Parcelas = parcelas; command.PrimeiroVencimento = primeiroVencimento; var result = (CommandResult)handler.Handle(command); System.Console.Write(result.Message); } else if (tipoCredito.Contains("5")) { var command = new LiberacaoCreditoImobiliarioCommand(); command.ValorCredito = valorCredito; command.Parcelas = parcelas; command.PrimeiroVencimento = primeiroVencimento; var result = (CommandResult)handler.Handle(command); System.Console.Write(result.Message); } }