コード例 #1
0
        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));
        }
コード例 #2
0
        public void DeveRetornarSucessoQuandoPrimeiroVencimentoValido()
        {
            var credito = new Consignado(20000, 10, DateTime.Now.AddDays(30));

            Assert.IsTrue(credito.Valid);
        }
コード例 #3
0
        public void DeveRetornarErroQuandoPrimeiroVencimentoInvalido()
        {
            var credito = new Consignado(200000, 10, DateTime.Now.AddDays(41));

            Assert.IsTrue(credito.Invalid);
        }
コード例 #4
0
        public void DeveRetornarSucessoQuandoParcelasValido()
        {
            var credito = new Consignado(20000, 5, DateTime.Now.AddDays(30));

            Assert.IsTrue(credito.Valid);
        }
コード例 #5
0
        public void DeveRetornarErroQuandoParcelasInvalido()
        {
            var credito = new Consignado(20000, 73, DateTime.Now.AddDays(30));

            Assert.IsTrue(credito.Invalid);
        }
コード例 #6
0
        public void DeveRetornarErroQuandoValorCreditoInvalido()
        {
            var credito = new Consignado(1000001, 10, DateTime.Now.AddDays(30));

            Assert.IsTrue(credito.Invalid);
        }