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)); }
public void DeveRetornarSucessoQuandoPrimeiroVencimentoValido() { var credito = new Imobiliario(20000, 10, DateTime.Now.AddDays(30)); Assert.IsTrue(credito.Valid); }
public void DeveRetornarErroQuandoPrimeiroVencimentoInvalido() { var credito = new Imobiliario(200000, 10, DateTime.Now.AddDays(41)); Assert.IsTrue(credito.Invalid); }
public void DeveRetornarSucessoQuandoParcelasValido() { var credito = new Imobiliario(20000, 5, DateTime.Now.AddDays(30)); Assert.IsTrue(credito.Valid); }
public void DeveRetornarErroQuandoParcelasInvalido() { var credito = new Imobiliario(20000, 73, DateTime.Now.AddDays(30)); Assert.IsTrue(credito.Invalid); }
public void DeveRetornarErroQuandoValorCreditoInvalido() { var credito = new Imobiliario(1000001, 10, DateTime.Now.AddDays(30)); Assert.IsTrue(credito.Invalid); }