Ejemplo n.º 1
0
        /// <summary>
        ///  Realiza o cálculo de uma proposta
        /// </summary>
        /// <param name="proposta"></param>
        /// <returns>Retorno Calculo</returns>
        public RetornoCalculo Calcular(Proposta proposta)
        {
            //Dictonary usadas para implementação do gráfico

            Dictionary<int, decimal> montantesMensais = new Dictionary<int, decimal>();
            Dictionary<int, decimal> investimentoMensais = new Dictionary<int, decimal>();

            //instanciado para receber os valores daqui para RetornoCalculo
            RetornoCalculo r = new RetornoCalculo();

            //inicio do calculo da previdencia
            decimal MontanteAcumulado = proposta.InvestimentoInicial;
            decimal Rendimento = 0;

            for (int i = 1; i < (proposta.TempoInvestimento * 12) ; i++)
            {
                Rendimento = MontanteAcumulado * (proposta.Perfil.TaxaRendimento/100);
                MontanteAcumulado = MontanteAcumulado + proposta.InvestimentoMensal + Rendimento;

                Rendimento = Math.Round(Rendimento, 2);
                MontanteAcumulado = Math.Round(MontanteAcumulado, 2);

                investimentoMensais.Add(i, Rendimento);
                montantesMensais.Add(i, MontanteAcumulado);
            }

            if (proposta.TipoRetornoEsperado == TipoRetorno.TempoDeRecebimento)
            {
                r.TotalMeses = proposta.TempoRecebimento * 12;
                r.RendaMensal = MontanteAcumulado / (proposta.TempoRecebimento * 12);

            }
            else if (proposta.TipoRetornoEsperado == TipoRetorno.RendaEsperadaPorMes)
            {
                r.TotalMeses = MontanteAcumulado / proposta.RendaEsperadaMes;
                r.RendaMensal = proposta.RendaEsperadaMes;
            }

            //Listas para armazenar os dados do Dictonary necessários para o gráfico
            List<int> meses = montantesMensais.Keys.ToList();
            List<decimal> Montante = montantesMensais.Values.ToList();
            List<decimal> Investido = investimentoMensais.Values.ToList();

            //var criadas para levar os dados das Lists pro RetornoCalculo e ser possível criar o gráfico com os dados
            //Os Replaces são necessários para deixar os dados úteis pro modelo do gráfico

            var mesesGrafico = string.Join(", ", meses);
            var montanteGrafico = string.Join("/ ", Montante).Replace(",", ".").Replace("/", ", ");
            var investidoGrafico = string.Join("/ ", Investido).Replace(",", ".").Replace("/", ", ");

            //as variaveis de RetornoCalculo recebem os valores aqui decididos
            r.Mes = mesesGrafico;
            r.MontanteGrafico = montanteGrafico;
            r.InvestidoGrafico = investidoGrafico;

            r.MontanteFinal = MontanteAcumulado;
            r.TotalInvestido = proposta.InvestimentoInicial + proposta.InvestimentoMensal * (proposta.TempoInvestimento * 12);

            r.ExecutadoSucesso = true;
            r.Mensagem = "Executado com sucesso!";

            return r;

                throw new NotImplementedException();
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Construtor que recebe uma proposta para inicializar os dados.
 /// </summary>
 /// <param name="proposta">Model de Proposta</param>
 public PropostaViewModel(Proposta proposta)
 {
     CarregarProposta(proposta);
 }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Faz um mapeamento entre um modelo de Proposta e os dados de PropostaViewModel
 /// </summary>
 /// <param name="proposta"></param>
 private void CarregarProposta(Proposta proposta)
 {
     if (proposta == null)
     {
         return;
     }
     this.Id = proposta.Id;
     this.InvestimentoIncial = proposta.InvestimentoInicial;
     this.InvestimentoMensal = proposta.InvestimentoMensal;
     this.Perfil = proposta.Perfil.Id;
     this.RendaEsperadaMes = proposta.RendaEsperadaMes;
     this.TempoInvestimento = proposta.TempoInvestimento;
     this.TempoRecebimento = proposta.TempoRecebimento;
     this.TipoRetornoEsperado = proposta.TipoRetornoEsperado;
     this.Aprovada = proposta.Aprovada;
     this.Cliente = proposta.Cliente.Nome;
     this.IdCliente = proposta.Cliente.Id;
     this.CPF = proposta.Cliente.Cpf;
     this.RendaFamiliar = proposta.Cliente.RendaFamiliar;
 }
Ejemplo n.º 5
0
        public ActionResult Create(Proposta proposta)
        {
            if (ModelState.IsValid)
            {
                db.Propostas.Add(proposta);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(proposta);
        }