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); }
public ActionResult Contratar(ResultadoCalculoViewModel resultado) { var proposta = db.Propostas.Include("Cliente").Include("Perfil").FirstOrDefault(r => r.Id == resultado.Id); proposta.Aprovada = true; db.Entry(proposta).State = EntityState.Modified; db.SaveChanges(); TempData["Sucesso"] = "Proposta Contratada Com Sucesso"; return RedirectToAction("Index", "Cliente"); }