/// <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(); }
/// <summary> /// Construtor que recebe uma proposta para inicializar os dados. /// </summary> /// <param name="proposta">Model de Proposta</param> public PropostaViewModel(Proposta proposta) { 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; }
/// <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; }
public ActionResult Create(Proposta proposta) { if (ModelState.IsValid) { db.Propostas.Add(proposta); db.SaveChanges(); return RedirectToAction("Index"); } return View(proposta); }