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