public static IEnumerable<SelectListItem> ObterPerfis() { SimuladorPrevidenciaDB db = new SimuladorPrevidenciaDB(); var perfs = db.Perfis.ToList(); var lista = perfs.Select(x => new SelectListItem { Text = x.Nome, Value = x.Id.ToString() }).ToList(); return lista; }
public ActionResult Calcular(PropostaViewModel propostaView) { var calculo = new CalculoPrevidencia(); var db = new SimuladorPrevidenciaDB(); var proposta = db.Propostas.FirstOrDefault(c => c.Id == propostaView.Id); if (proposta == null) { proposta = GravarProposta(propostaView, new RetornoCalculo()); } // Realiza o cálculo da proposta informada: var retornoCalculo = calculo.Calcular(proposta); if (retornoCalculo.ExecutadoSucesso) { TempData["Sucesso"] = retornoCalculo.Mensagem; //ViewBag utilizadas para armazenar os dados do gráfico ViewBag.TotalInvestido = retornoCalculo.InvestidoGrafico; ViewBag.MontanteAcumulado = retornoCalculo.MontanteGrafico; ViewBag.Mes = retornoCalculo.Mes; } else { TempData["Erro"] = retornoCalculo.Mensagem; return RedirectToAction("Create", "Proposta", new { id = propostaView.IdCliente }); } // Grava a proposta no banco: //Esta linha esta duplicando o registro. // var p = GravarProposta(propostaView, retornoCalculo); // Dados do model: var resultado = new ResultadoCalculoViewModel { Id = proposta.Id, Cliente = propostaView.Cliente, Cpf = propostaView.CPF, InvestimentoInicial = propostaView.InvestimentoIncial, InvestimentoMensal = propostaView.InvestimentoMensal, Prazo = propostaView.TempoInvestimento, TotalInvestido = retornoCalculo.TotalInvestido, MontanteFinal = retornoCalculo.MontanteFinal, RendaFinal = retornoCalculo.RendaMensal, TempoRecebimento = retornoCalculo.TotalMeses, TipoRetorno = proposta.TipoRetornoEsperado, DadosProposta = propostaView }; return View(resultado); }
/// <summary> /// Incializa o viewModel pela chave de uma proposta /// </summary> /// <param name="id">ID da proposta</param> public PropostaViewModel(int id) { SimuladorPrevidenciaDB ctx = new SimuladorPrevidenciaDB(); var proposta = ctx.Propostas.Include("Perfil").Include("Cliente").FirstOrDefault(c => c.Id == id); CarregarProposta(proposta); }
private Proposta NovaProposta(PropostaViewModel prop, RetornoCalculo calculo, SimuladorPrevidenciaDB contexto) { var cliente = contexto.Clientes.Find(prop.IdCliente); var perfil = contexto.Perfis.Find(prop.Perfil); var proposta = new Proposta{ Aprovada = false, Cliente = cliente, InvestimentoInicial = prop.InvestimentoIncial, InvestimentoMensal = prop.InvestimentoMensal, Perfil = perfil, RendaEsperadaMes = prop.RendaEsperadaMes, TempoInvestimento = prop.TempoInvestimento, PrazoRecebimento = calculo.TotalMeses, TempoRecebimento = prop.TempoRecebimento, TipoRetornoEsperado = prop.TipoRetornoEsperado }; contexto.Propostas.Add(proposta); contexto.SaveChanges(); return proposta; }
private Proposta GravarProposta(PropostaViewModel prop, RetornoCalculo calculo) { var contexto = new SimuladorPrevidenciaDB(); var proposta = contexto.Propostas.Find(prop.Id); if (proposta == null) { return NovaProposta(prop, calculo, contexto); } var perfil = contexto.Perfis.Find(prop.Perfil); proposta.Aprovada = false; proposta.InvestimentoInicial = prop.InvestimentoIncial; proposta.InvestimentoMensal = prop.InvestimentoMensal; proposta.Perfil = perfil; proposta.RendaEsperadaMes = prop.RendaEsperadaMes; proposta.TempoInvestimento = prop.TempoInvestimento; proposta.PrazoRecebimento = calculo.TotalMeses; proposta.TempoRecebimento = prop.TempoRecebimento; proposta.TipoRetornoEsperado = prop.TipoRetornoEsperado; db.Entry(proposta).State = EntityState.Modified; contexto.SaveChanges(); return proposta; }