Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        public void DeveRetornarSucessoQuandoPrimeiroVencimentoValido()
        {
            var credito = new Imobiliario(20000, 10, DateTime.Now.AddDays(30));

            Assert.IsTrue(credito.Valid);
        }
Ejemplo n.º 3
0
        public void DeveRetornarErroQuandoPrimeiroVencimentoInvalido()
        {
            var credito = new Imobiliario(200000, 10, DateTime.Now.AddDays(41));

            Assert.IsTrue(credito.Invalid);
        }
Ejemplo n.º 4
0
        public void DeveRetornarSucessoQuandoParcelasValido()
        {
            var credito = new Imobiliario(20000, 5, DateTime.Now.AddDays(30));

            Assert.IsTrue(credito.Valid);
        }
Ejemplo n.º 5
0
        public void DeveRetornarErroQuandoParcelasInvalido()
        {
            var credito = new Imobiliario(20000, 73, DateTime.Now.AddDays(30));

            Assert.IsTrue(credito.Invalid);
        }
Ejemplo n.º 6
0
        public void DeveRetornarErroQuandoValorCreditoInvalido()
        {
            var credito = new Imobiliario(1000001, 10, DateTime.Now.AddDays(30));

            Assert.IsTrue(credito.Invalid);
        }