Ejemplo n.º 1
0
        public async Task <List <string> > ValidarCredito(CreditoModel credito)
        {
            List <string> erros = new List <string>();

            if (credito.TipoCredito == TipoCreditoModel.Pj && credito.ValorCredito < Convert.ToDecimal(15000))
            {
                erros.Add("O valor minimo para Crédito Pessoa Juridica é de R$15.000,00");
            }

            if (credito.ValorCredito == 0 || credito.ValorCredito > Convert.ToDecimal(1000000))
            {
                erros.Add("Valor do crédito inválido");
            }

            if (credito.QtdParcelas < 5 || credito.QtdParcelas > 75)
            {
                erros.Add("Quantidade de parcelas deve ser entre 5 e 75");
            }

            if (credito.DataVencimento.Date < DateTime.Now.AddDays(15).Date || credito.DataVencimento.Date > DateTime.Now.AddDays(40).Date)
            {
                erros.Add("O data de vencimento minima é: " + DateTime.Now.AddDays(15).ToString("dd/MM/yyyy") + " e a máxima: " + DateTime.Now.AddDays(40).ToString("dd/MM/yyyy"));
            }

            return(erros);
        }
        public ActionResult Index([Bind(Include = "IdEmpresa,IdConta")] CreditoModel model)
        {
            Credito credito = new Credito {
                IdConta = model.IdConta, IdEmpresa = model.IdEmpresa, DataCredito = DateTime.Today.Date, Referencia = DateTime.Today.Date
            };

            return(View("Incluir", credito));
        }
        // GET: Controle/Credito
        public ActionResult Index(int idEmpresa = 0, int idConta = 0, int idTipoCredito = 0, DateTime?dataCredito = null, DateTime?referencia = null)
        {
            CreditoModel model = new CreditoModel();

            model.IdEmpresa     = idEmpresa != 0 ? idEmpresa : _empresa.Listar().Where(x => x.Ativo == true).OrderBy(x => x.Fantasia).FirstOrDefault().Id;
            model.IdConta       = idConta != 0 ? idConta : _conta.Listar().Where(x => x.IdEmpresa == model.IdEmpresa && x.Ativo == true).FirstOrDefault().Id;
            model.IdTipoCredito = idTipoCredito;
            model.DataCredito   = dataCredito == null ? DateTime.Today.Date : dataCredito;
            model.Referencia    = referencia == null ? DateTime.Today.Date : referencia;

            return(View(model));
        }
Ejemplo n.º 4
0
        public async Task <ReturnoModel> AnaliseCredito(CreditoModel credito)
        {
            ReturnoModel retorno = new ReturnoModel();
            var          erros   = await _validacaoService.ValidarCredito(credito);

            if (erros.Count > 0)
            {
                retorno.Status       = "Reprovado";
                retorno.MensagemErro = erros[0].ToString();
            }
            else
            {
                retorno = await CalcularCredito(credito);

                retorno.Status = "Aprovado";
            }
            return(retorno);
        }
Ejemplo n.º 5
0
        public async Task <ReturnoModel> CalcularCredito(CreditoModel credito)
        {
            ReturnoModel retorno = new ReturnoModel();

            switch (credito.TipoCredito)
            {
            case TipoCreditoModel.Direto:
                //Juros de 2% ao mês
                decimal jurosDireto = Convert.ToDecimal(0.02);
                retorno.ValorJuros = credito.ValorCredito * jurosDireto * credito.QtdParcelas;
                retorno.ValorTotal = credito.ValorCredito + retorno.ValorJuros;
                break;

            case TipoCreditoModel.Consignado:
                //Juros de 1% ao mês
                decimal jurosConsignado = Convert.ToDecimal(0.01);
                retorno.ValorJuros = credito.ValorCredito * jurosConsignado * credito.QtdParcelas;
                retorno.ValorTotal = credito.ValorCredito + retorno.ValorJuros;
                break;

            case TipoCreditoModel.Pj:
                //Juros de 5% ao mês
                decimal jurosPj = Convert.ToDecimal(0.05);
                retorno.ValorJuros = credito.ValorCredito * jurosPj * credito.QtdParcelas;
                retorno.ValorTotal = credito.ValorCredito + retorno.ValorJuros;
                break;

            case TipoCreditoModel.Pf:
                //Juros de 3% ao mês
                decimal jurosPf = Convert.ToDecimal(0.03);
                retorno.ValorJuros = credito.ValorCredito * jurosPf * credito.QtdParcelas;
                retorno.ValorTotal = credito.ValorCredito + retorno.ValorJuros;
                break;

            case TipoCreditoModel.Imobiliario:
                //Juros de 9% ao mês
                decimal jurosImobiliario = Convert.ToDecimal(0.09);
                retorno.ValorJuros = credito.ValorCredito * jurosImobiliario * credito.QtdParcelas;
                retorno.ValorTotal = credito.ValorCredito + retorno.ValorJuros;
                break;
            }

            return(retorno);
        }
Ejemplo n.º 6
0
        public async void Run()
        {
            CreditoModel credito = new CreditoModel();
            int          menu    = 1;

            Console.WriteLine(new string('_', 75));
            Console.WriteLine("Bem vindo ao sistema de Crédito");
            Console.WriteLine(new string('_', 75));

            while (menu == 1)
            {
                #region [Valor total]
                Console.WriteLine("1º) Insira o valor do crédito:");
                string  valorCredito = Console.ReadLine();
                decimal ValorCreditoDec;
                while (!Decimal.TryParse(valorCredito, out ValorCreditoDec) || ValorCreditoDec <= 0)
                {
                    Console.WriteLine("[Erro] - Digite um valor de crédito válido");
                    valorCredito = Console.ReadLine();
                }
                credito.ValorCredito = ValorCreditoDec;
                Console.WriteLine(new string('_', 75));
                #endregion [Valor total]

                #region [Tipo de Credito]
                Console.WriteLine("2º) Insira o tipo de crédito que deseja:");
                Console.WriteLine("[1] - Crédito Direto; [2] - Crédito Consignado");
                Console.WriteLine("[3] - Crédito PJ; [4] - Crédito PF; [5] - Crédito Imobiliario");
                string TipoCredito = Console.ReadLine();
                int    TipoCreditoInt;
                while (!Int32.TryParse(TipoCredito, out TipoCreditoInt) || TipoCreditoInt < 1 || TipoCreditoInt > 5)
                {
                    Console.WriteLine("[Erro] - Digite um tipo Valido");
                    TipoCredito = Console.ReadLine();
                }
                credito.TipoCredito = ValidaTipoCredito(TipoCreditoInt);
                Console.WriteLine(new string('_', 75));
                #endregion [Tipo de Credito]

                #region [Quantidade de Parcelas]
                Console.WriteLine("3º) Insira a quantidade de parcelas:");
                string qntParcelas = Console.ReadLine();
                int    qntParcelasInt;
                while (!Int32.TryParse(qntParcelas, out qntParcelasInt) || qntParcelasInt == 0)
                {
                    Console.WriteLine("[Erro] - Digite uma quantidade de parcelas Valida");
                    qntParcelas = Console.ReadLine();
                }
                credito.QtdParcelas = qntParcelasInt;
                Console.WriteLine(new string('_', 75));
                #endregion [Quantidade de Parcelas]

                #region [Data de Vencimento]
                Console.WriteLine("4º) Insira a data do primeiro Parcelamento: (DD/MM/YYYY)");
                string   dataVencimento = Console.ReadLine();
                DateTime dataVencimentoDate;
                while (!DateTime.TryParse(dataVencimento, out dataVencimentoDate) || dataVencimentoDate.Date <= DateTime.Now.Date)
                {
                    Console.WriteLine("[Erro] - Digite uma data de vencimento Valida");
                    dataVencimento = Console.ReadLine();
                }
                credito.DataVencimento = dataVencimentoDate;
                Console.WriteLine(new string('_', 75));
                #endregion [Data de Vencimento]

                var retorno = await _creditoService.AnaliseCredito(credito);

                if (retorno.Status.ToUpper() == "APROVADO")
                {
                    Console.WriteLine(new string('_', 75));
                    Console.WriteLine("Sua solicitação foi aceita!");
                    Console.WriteLine("Status: " + retorno.Status);
                    Console.WriteLine("Valor Total com Juros: R$" + Math.Round(retorno.ValorTotal, 2));
                    Console.WriteLine("Valor do Juros: R$" + Math.Round(retorno.ValorJuros, 2));
                }
                else
                {
                    Console.WriteLine(new string('_', 75));
                    Console.WriteLine("Sua solicitação foi negada!");
                    Console.WriteLine("Status: " + retorno.Status);
                    Console.WriteLine("Mensagem: " + retorno.MensagemErro);
                }

                #region [Menu]
                Console.WriteLine(new string('-', 75));
                Console.WriteLine(new string('_', 75));
                Console.WriteLine("Você deseja realizar uma nova analise?");
                Console.WriteLine("[1] - Sim ; [0] - Não");
                string menuString = Console.ReadLine();
                while (!Int32.TryParse(menuString, out menu) || menu > 1)
                {
                    Console.WriteLine("[Erro] - Digite uma opção válida");
                    menuString = Console.ReadLine();
                }
                if (menu == 0)
                {
                    Environment.Exit(1);
                }
                #endregion [Menu]
            }
        }