public ICommandResult Handle(LiberacaoCreditoDiretoCommand command) { command.Validate(); if (command.Invalid) { AddNotifications(command); return(new CommandResult(false, "Não foi possível a Liberação de Crédito Direto", 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 Direto", null)); } //Gerar a Entidade de Liberacao de Credito var direto = new Direto(valorCredito, parcelas, primeiroVencimento); //Aprovar ou Reprovar direto.Aprovar(); //Calcular Juros direto.CalcularJuros(); if (direto.Invalid) { return(new CommandResult(false, "Não foi possível calcular o Juros de Crédito Direto", null)); } return(new CommandResult(true, $"Status do crédito: {direto.StatusString} | Valor total com juros: {direto.ValorTotalComJurosString} | Valor do juros: {direto.ValorJurosString} ", direto)); }
public void DeveRetornarSucessoQuandoPrimeiroVencimentoValido() { var credito = new Direto(20000, 10, DateTime.Now.AddDays(30)); Assert.IsTrue(credito.Valid); }
public void DeveRetornarErroQuandoPrimeiroVencimentoInvalido() { var credito = new Direto(200000, 10, DateTime.Now.AddDays(41)); Assert.IsTrue(credito.Invalid); }
public void DeveRetornarSucessoQuandoParcelasValido() { var credito = new Direto(20000, 5, DateTime.Now.AddDays(30)); Assert.IsTrue(credito.Valid); }
public void DeveRetornarErroQuandoParcelasInvalido() { var credito = new Direto(20000, 73, DateTime.Now.AddDays(30)); Assert.IsTrue(credito.Invalid); }
public void DeveRetornarErroQuandoValorCreditoInvalido() { var credito = new Direto(1000001, 10, DateTime.Now.AddDays(30)); Assert.IsTrue(credito.Invalid); }