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)); }
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); }
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); }
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] } }