Example #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));
        }
Example #2
0
        static void Main(string[] args)
        {
            System.Console.Write("Digite o valor do crédito:");
            string valorCredito = System.Console.ReadLine();

            System.Console.Write("Digite o tipo de crédito (1 - Direto | 2 - Consignado | 3 - Pessoa Jurídica | 4 - Pessoa Física | 5 - Imobiliário):");
            string tipoCredito = System.Console.ReadLine();

            System.Console.Write("Digite a quantidade de parcelas:");
            string parcelas = System.Console.ReadLine();

            System.Console.Write("Digite a data do primeiro vencimento:");
            string primeiroVencimento = System.Console.ReadLine();

            var handler = new LiberacaoCreditoHandler();

            if (tipoCredito.Contains("1"))
            {
                var command = new LiberacaoCreditoDiretoCommand();
                command.ValorCredito       = valorCredito;
                command.Parcelas           = parcelas;
                command.PrimeiroVencimento = primeiroVencimento;
                var result = (CommandResult)handler.Handle(command);
                System.Console.Write(result.Message);
            }
            else if (tipoCredito.Contains("2"))
            {
                var command = new LiberacaoCreditoConsignadoCommand();
                command.ValorCredito       = valorCredito;
                command.Parcelas           = parcelas;
                command.PrimeiroVencimento = primeiroVencimento;
                var result = (CommandResult)handler.Handle(command);
                System.Console.Write(result.Message);
            }
            else if (tipoCredito.Contains("3"))
            {
                var command = new LiberacaoCreditoJuridicaCommand();
                command.ValorCredito       = valorCredito;
                command.Parcelas           = parcelas;
                command.PrimeiroVencimento = primeiroVencimento;
                var result = (CommandResult)handler.Handle(command);
                System.Console.Write(result.Message);
            }
            else if (tipoCredito.Contains("4"))
            {
                var command = new LiberacaoCreditoFisicaCommand();
                command.ValorCredito       = valorCredito;
                command.Parcelas           = parcelas;
                command.PrimeiroVencimento = primeiroVencimento;
                var result = (CommandResult)handler.Handle(command);
                System.Console.Write(result.Message);
            }
            else if (tipoCredito.Contains("5"))
            {
                var command = new LiberacaoCreditoImobiliarioCommand();
                command.ValorCredito       = valorCredito;
                command.Parcelas           = parcelas;
                command.PrimeiroVencimento = primeiroVencimento;
                var result = (CommandResult)handler.Handle(command);
                System.Console.Write(result.Message);
            }
        }