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