/// <summary> /// Metodo que permite cargar el histograma /// </summary> private void CargarHistograma() { //creo los intervalos del histograma _intervalos = new Intervalo[_cantidadIntervalos]; var rango = _lista.Max(aleatorio => aleatorio.NumAleatorio) - _lista.Min(aleatorio => aleatorio.NumAleatorio); var amplitudIntervalo = rango / _cantidadIntervalos; //A partir de la cantidad de cantidadIntervalos, calculamos sus limites //Intervalo [a,b) for (var i = 0; i < _cantidadIntervalos; i++) { //para tp1 /* if (i == 0) * intervalos[i] = new Intervalo(0, ((double) 1 / cantidadIntervalos) * (i + 1)); * else * { * intervalos[i] = new Intervalo(intervalos[i - 1].LimiteSuperior, * ((double) 1 / cantidadIntervalos) * (i + 1)); * }*/ if (i == 0) { _intervalos[i] = new Intervalo(_lista.Min(aleatorio => aleatorio.NumAleatorio), _lista.Min(aleatorio => aleatorio.NumAleatorio) + amplitudIntervalo); } else { _intervalos[i] = new Intervalo(_intervalos[i - 1].LimiteSuperior, _intervalos[i - 1].LimiteSuperior + amplitudIntervalo); } } //ahora recorremos la lista para calcular las frecuencias observadas. foreach (var t1 in _lista) { foreach (var t in _intervalos) { if (t1.NumAleatorio >= t.LimiteInferior && t1.NumAleatorio < t.LimiteSuperior) { t.CantidadObservaciones++; } } } //limpiamos el chart y preparamos el nuevo histograma List <int> listaEnteros = new List <int>(); //lista para acumular las cantidades de cada intervalo y luego poder obtener el MAX() //creo la serie y la seteo histogramaGenerado.Series.Clear(); histogramaGenerado.Series.Add("Frecuecias Observadas"); histogramaGenerado.Series["Frecuecias Observadas"].ChartType = SeriesChartType.Column; histogramaGenerado.Series["Frecuecias Observadas"].Color = Color.DarkGray; //cargamos el histograma con la cantidad de observaciones de cada intervalo for (int i = 0; i < _cantidadIntervalos; i++) { listaEnteros.Add(_intervalos[i].CantidadObservaciones); //Agrego el punto a la serie histogramaGenerado.Series[0].Points.Add(_intervalos[i].CantidadObservaciones); //Agrego los labels de de los intervalos histogramaGenerado.Series[0].Points[i].AxisLabel = "[" + TruncateFunction(_intervalos[i].LimiteInferior, 4) + " / " + TruncateFunction(_intervalos[i].LimiteSuperior, 4) + ")"; //Pongo vertical los label histogramaGenerado.ChartAreas[0].AxisX.LabelStyle.Angle = 90; histogramaGenerado.Series[0].IsValueShownAsLabel = true; histogramaGenerado.Series[0].LegendText = _intervalos[i].CantidadObservaciones.ToString(); histogramaGenerado.Series[0].LabelAngle = 90; histogramaGenerado.Series[0].Points[i].LabelAngle = 90; } //Obtenemos la cantidad total de observaciones var cantidadObservaciones = double.Parse(_lista.Count.ToString()); histogramaGenerado.ChartAreas[0].AxisY.Maximum = listaEnteros.Max(); //Obtenemos la frecuencia esperada de la serie //es del tp1 if (_distribucion == null) { var freEsperada = (double)cantidadObservaciones / (double)_cantidadIntervalos; lblFrecuenciaEsperada.Text = freEsperada.ToString(); } //llamada al metodo para cargar la tabla de frecuencias CargarTabla(); }
/// <summary> /// Metodo que calcula la frecuencia esperada en un intervalo /// </summary> /// <param name="intervalo"></param> /// <param name="tamanioMuestra"></param> /// <param name="cantidadIntervalos"></param> /// <returns></returns> public override double CalcularFrecuenciaEsperadaEnIntervalo(Intervalo intervalo, int tamanioMuestra, int cantidadIntervalos = 0) { return(tamanioMuestra / cantidadIntervalos); }
public IActionResult GetSimulacaoNaoParticipante([FromBody] DadosSimulacaoNaoParticipante dados) { try { var data = DateTime.Now.PrimeiroDiaDoMes(); var dataAposentadoriaPorIdade = dados.DataNascimento.AddYears(dados.IdadeAposentadoria); var dataAposentaadoriaPorPlano = DateTime.Now.AddYears(10); var dataAposentadoria = DateTime.Compare(dataAposentadoriaPorIdade, dataAposentaadoriaPorPlano) > 0 ? dataAposentadoriaPorIdade : dataAposentaadoriaPorPlano; var contribFacultativa = dados.ContribFacultativa.HasValue ? dados.ContribFacultativa.Value : 0; var contribBruta = dados.ContribBasica * 2 + contribFacultativa; var taxaMensal = BuscarTaxaMensal(dados.TaxaJuros); var valorFuturo = dados.AporteInicial; while (data <= dataAposentadoria) { var contribMensal = contribBruta; if (data.Month == 12) { contribMensal *= 2; } valorFuturo = (valorFuturo + (valorFuturo * taxaMensal / 100)) + contribMensal; data = data.AddMonths(1); } // Valor do saque decimal valorSaque = valorFuturo / 100 * dados.Saque; // Dependentes var idadeDependente = 0; var idadeDependenteTemporario = 0; var dependenteProxy = new DependenteProxy(); // Dependente vitalício DateTime?dataNascConjugue = dados.NascimentoConjugue; DateTime?dataNascFilhoInvalido = dados.NascimentoFilhoInvalido; DateTime?dataNascDependente; if (dataNascConjugue != null && dataNascFilhoInvalido != null) { dataNascDependente = dataNascConjugue > dataNascFilhoInvalido ? dataNascConjugue : dataNascFilhoInvalido; } else if (dataNascConjugue != null && dataNascFilhoInvalido == null) { dataNascDependente = dataNascConjugue; } else { dataNascDependente = dataNascFilhoInvalido == null ? null : dataNascFilhoInvalido; } /// var dependenteVitalicio = dependenteProxy.BuscarDependentePorContratoTrabalhoDtValidadeTipo(SqContratoTrabalho, "V", dataAposentadoria); if (dataNascDependente != null) { // dataNascDependente = Convert.ToDateTime(dataNascDependente); idadeDependente = new Intervalo(dataAposentadoria, dataNascDependente.Value).Anos; } // Dependente temporário if (dados.NascimentoFilhoMaisNovo.HasValue) { idadeDependenteTemporario = new Intervalo(dataAposentadoria, dados.NascimentoFilhoMaisNovo.Value).Anos; } // Fator atuarial var fatorAtuarialProxy = new FatorAtuarialMortalidadeProxy(); var axiPar = fatorAtuarialProxy.BuscarPorIdadeSexo(dados.IdadeAposentadoria, dados.Sexo).VL_FATOR_A.Value; var axiDep = 0M; var axyi = 0M; if (idadeDependente > 0) { axiDep = fatorAtuarialProxy.BuscarPorIdadeSexo(idadeDependente, dados.SexoFilhoMaisNovo).VL_FATOR_A.Value; var fator = fatorAtuarialProxy.BuscarPorIdadePartIdadeDepSexo(dados.IdadeAposentadoria, idadeDependente, dados.SexoFilhoMaisNovo); axyi = fator.VL_FATOR_A.Value; } var prazoDepentendeTemporario = 20 - idadeDependenteTemporario; if (prazoDepentendeTemporario < 0) { prazoDepentendeTemporario = 0; } var xn = dados.IdadeAposentadoria + prazoDepentendeTemporario; var fatorDxn = fatorAtuarialProxy.BuscarPorTabelaIdadeSexo("lxdx", xn, dados.Sexo).VL_FATOR_B.Value; var fatorDx = fatorAtuarialProxy.BuscarPorTabelaIdadeSexo("lxdx", dados.IdadeAposentadoria, dados.Sexo).VL_FATOR_B.Value; var fatorAxn = fatorAtuarialProxy.BuscarPorTabelaIdadeSexo("ax", xn, dados.Sexo).VL_FATOR_A.Value; decimal fatorAn = 0; if (prazoDepentendeTemporario > 0 && dados.SexoFilhoInvalido != null) { fatorAn = fatorAtuarialProxy.BuscarPorTabelaIdadeSexo("an", prazoDepentendeTemporario, dados.SexoFilhoInvalido).VL_FATOR_A.Value; } var apuracaoAxn = axiPar - (fatorDxn / fatorDx) * fatorAxn; var fatorAtuarialSemPensaoMorte = 13 * axiPar; var fatorAtuarialPensaoMorte = 13 * (axiPar + Math.Max(fatorAn - apuracaoAxn, axiDep - axyi)); // Renda por prazos indeterminados var rendaPrazoIndeterminadoPensaoMorte = (valorFuturo - valorSaque) / fatorAtuarialPensaoMorte; var rendaPrazoIndeterminadoSemPensaoMorte = (valorFuturo - valorSaque) / fatorAtuarialSemPensaoMorte; // Renda por prazo certo var listaPrazos = new List <KeyValuePair <int, decimal> >(); for (int prazo = 15; prazo <= 25; prazo++) { decimal valor = (valorFuturo - valorSaque) / (prazo * 13); listaPrazos.Add(new KeyValuePair <int, decimal>(prazo, valor)); } // Renda por percentual do saldo de contas var listaSaldoPercentuais = new List <KeyValuePair <string, decimal> >(); for (decimal percentual = 0.5M; percentual <= 2.0M; percentual += 0.5M) { decimal valor = (valorFuturo - valorSaque) * percentual / 100; listaSaldoPercentuais.Add(new KeyValuePair <string, decimal>(percentual.ToString("N1").Replace(".", ","), valor)); } return(Json(new { nome = dados.Nome, email = dados.Email, valorFuturo, dataAposentadoria, valorSaque, idadeDependente, fatorAtuarialPensaoMorte, fatorAtuarialSemPensaoMorte, rendaPrazoIndeterminadoPensaoMorte, rendaPrazoIndeterminadoSemPensaoMorte, listaPrazos, listaSaldoPercentuais })); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
public IActionResult GetSimulacao(int sqPlanoPrevidencial, [FromBody] dynamic dados) { try { //TODO: Jogar pra proxy var sqPlano = 3; var dadosPessoais = new DadosPessoaisProxy().BuscarPorCdPessoa(CdPessoa).First(); int idadeAposentadoria = Convert.ToInt32(dados.idadeAposentadoria); Add("Idade Aposentadoria", idadeAposentadoria.ToString()); decimal contribBasica = Convert.ToDecimal(dados.contribBasica, new CultureInfo("pt-BR")); Add("Contribuição Básica", contribBasica.ToString()); decimal contribFacultativa = Convert.ToDecimal(dados.contribFacultativa, new CultureInfo("pt-BR")); Add("Contribuição Facultativa", contribFacultativa.ToString()); decimal saldo = new SaldoProxy().BuscarSaldoCD(DateTime.Now, SqContratoTrabalho, sqPlano, CdPessoa).Total; Add($"Saldo em {DateTime.Now:dd/MM/yyyy}", saldo.ToString()); var taxaJuros = new FatorValidadeProxy().BuscarUltimo().VL_TX_JUROS; Add($"Taxa de Juros", taxaJuros.ToString()); var dataAtual = DateTime.Now;//.PrimeiroDiaDoMes(); var dataNascimento = new DadosPessoaisProxy().BuscarPorCdPessoa(CdPessoa).First().DT_NASCIMENTO.Value; var dataAposentadoria = dataNascimento.AddYears(idadeAposentadoria); Add($"Data de Aposentadoria por Idade", dataAposentadoria.ToString("dd/MM/yyyy")); var plano = new PlanoVinculadoProxy().BuscarPorContratoTrabalhoPlano(SqContratoTrabalho, sqPlano); var dataInscricao = plano.DT_INSC_ANTERIOR ?? plano.DT_INSC_PLANO; Add($"Data de Inscrição", dataInscricao.ToString("dd/MM/yyyy")); var dataAposentadoria2 = dataInscricao.AddYears(10); Add($"Data de Aposentadoria por Tempo de Plano", dataAposentadoria2.ToString("dd/MM/yyyy")); dataAposentadoria = DateTime.Compare(dataAposentadoria, dataAposentadoria2) > 0 ? dataAposentadoria : dataAposentadoria2; Add($"Data de Aposentadoria Real", dataAposentadoria.ToString("dd/MM/yyyy")); var data = DateTime.Compare(dataAtual, dataAposentadoria) > 0 ? dataAposentadoria : dataAtual; var contribBruta = contribBasica * 2 + contribFacultativa; Add($"Contribuição Bruta", $"{contribBasica} * 2 + {contribFacultativa} = {contribBruta}"); var taxaMensal = BuscarTaxaMensal(taxaJuros); Add($"Taxa Mensal", taxaMensal.ToString()); var valorFuturo = saldo; while (data < dataAposentadoria) { var decimoTerceiro = data.Month == 12; var contribMensal = contribBruta; if (decimoTerceiro) { contribMensal *= 2; } var valorFuturoAtual = valorFuturo; valorFuturo = (valorFuturo + (valorFuturo * taxaMensal / 100)) + contribMensal; Add($"Saldo em {data:dd/MM/yyyy}", $"({valorFuturoAtual} + ({valorFuturoAtual} * {taxaMensal} / 100)) + {contribMensal} = {valorFuturo}"); data = data.AddMonths(1); } // Valor do saque var valorSaque = valorFuturo / 100 * (decimal)dados.saque; Add($"Valor Saque", $"{valorFuturo} / 100 * {(decimal)dados.saque} = {valorSaque}"); // Dependentes var idadeDependente = 0; var sexoDependente = ""; var idadeDependenteTemporario = 0; var dependenteProxy = new DependenteProxy(); // Dependente vitalício var dependenteVitalicio = dependenteProxy.BuscarDependentePorContratoTrabalhoDtValidadeTipo(SqContratoTrabalho, "V", dataAposentadoria); if (dependenteVitalicio != null) { var dadosDependente = new DadosPessoaisProxy().BuscarDependentePorCdPessoa(dependenteVitalicio.CD_PESSOA_DEP); if (dadosDependente == null) { throw new Exception("Não existem dados cadastrados para um de seus dependentes. Por favor, entre em contato com a Faceb."); } if (string.IsNullOrEmpty(dadosDependente.IR_SEXO)) { throw new Exception("Existe um dependente cadastrado que não possui o campo \"Sexo\" preenchido. Por favor, entre em contato com a Faceb."); } sexoDependente = dadosDependente.IR_SEXO; var dataNascDependente = dependenteVitalicio.DT_NASCIMENTO; idadeDependente = new Intervalo(dataAposentadoria, dataNascDependente).Anos; } // Dependente temporário var dependenteTemporario = dependenteProxy.BuscarDependentePorContratoTrabalhoDtValidadeTipo(SqContratoTrabalho, "T", dataAposentadoria); if (dependenteTemporario != null) { var dadosDependente = new DadosPessoaisProxy().BuscarDependentePorCdPessoa(dependenteTemporario.CD_PESSOA_DEP); if (dadosDependente == null) { throw new Exception("Não existem dados cadastrados para um de seus dependentes. Por favor, entre em contato com a Faceb."); } if (string.IsNullOrEmpty(dadosDependente.IR_SEXO)) { throw new Exception("Existe um dependente cadastrado que não possui o campo \"Sexo\" preenchido. Por favor, entre em contato com a Faceb."); } sexoDependente = dadosDependente.IR_SEXO; var dataNascDependenteTemporario = dependenteTemporario.DT_NASCIMENTO; idadeDependenteTemporario = new Intervalo(dataAposentadoria, dataNascDependenteTemporario).Anos; } // Fator atuarial var fatorAtuarialProxy = new FatorAtuarialMortalidadeProxy(); var axiPar = fatorAtuarialProxy.BuscarPorIdadeSexo(idadeAposentadoria, dadosPessoais.IR_SEXO).VL_FATOR_A.Value; Add("Fator AXI", axiPar.ToString()); var axiDep = 0M; var axyi = 0M; if (idadeDependente > 0) { axiDep = fatorAtuarialProxy.BuscarPorIdadeSexo(idadeDependente, sexoDependente).VL_FATOR_A.Value; var fator = fatorAtuarialProxy.BuscarPorIdadePartIdadeDepSexo(idadeAposentadoria, idadeDependente, sexoDependente); axyi = fator.VL_FATOR_A.Value; Add("Fator AXYI", axyi.ToString()); } var prazoDepentendeTemporario = 20 - idadeDependenteTemporario; var xn = idadeAposentadoria + prazoDepentendeTemporario; var fatorDxn = fatorAtuarialProxy.BuscarPorTabelaIdadeSexo("lxdx", xn, dadosPessoais.IR_SEXO).VL_FATOR_B.Value; var fatorDx = fatorAtuarialProxy.BuscarPorTabelaIdadeSexo("lxdx", idadeAposentadoria, dadosPessoais.IR_SEXO).VL_FATOR_B.Value; var fatorAxn = fatorAtuarialProxy.BuscarPorTabelaIdadeSexo("ax", xn, dadosPessoais.IR_SEXO).VL_FATOR_A.Value; Add("Fator Dxn", fatorDxn.ToString()); Add("Fator Dx", fatorDx.ToString()); Add("Fator Axn", fatorAxn.ToString()); decimal fatorAn = 0; if (prazoDepentendeTemporario > 0 && !string.IsNullOrEmpty(sexoDependente)) { fatorAn = fatorAtuarialProxy.BuscarPorTabelaIdadeSexo("an", prazoDepentendeTemporario, sexoDependente).VL_FATOR_A.Value; Add("Fator Axn", fatorAn.ToString()); } var apuracaoAxn = axiPar - (fatorDxn / fatorDx) * fatorAxn; Add("Apuração Axn", $"{axiPar} - ({fatorDxn} / {fatorDx}) * {fatorAxn} = {apuracaoAxn}"); var fatorAtuarialSemPensaoMorte = 13 * axiPar; var fatorAtuarialPensaoMorte = 13 * (axiPar + Math.Max(fatorAn - apuracaoAxn, axiDep - axyi)); Add("Fator Atuarial Sem Pensão de Morte", $"13 * {axiPar} = {fatorAtuarialSemPensaoMorte}"); Add("Fator Atuarial Com Pensão de Morte", $"13 * ({axiPar} + {Math.Max(fatorAn - apuracaoAxn, axiDep - axyi)} = {fatorAtuarialPensaoMorte}"); // Renda por prazos indeterminados var rendaPrazoIndeterminadoSemPensaoMorte = (valorFuturo - valorSaque) / fatorAtuarialSemPensaoMorte; var rendaPrazoIndeterminadoPensaoMorte = (valorFuturo - valorSaque) / fatorAtuarialPensaoMorte; Add("Renda Prazo Indeterminado Sem Pensão de Morte", $"({valorFuturo} - {valorSaque}) / {fatorAtuarialSemPensaoMorte} = {rendaPrazoIndeterminadoSemPensaoMorte}"); Add("Renda Prazo Indeterminado Com Pensão de Morte", $"({valorFuturo} - {valorSaque}) / {fatorAtuarialPensaoMorte} = {rendaPrazoIndeterminadoPensaoMorte}"); // Renda por prazo certo var listaPrazos = new List <KeyValuePair <int, decimal> >(); for (int prazo = 15; prazo <= 25; prazo++) { decimal valor = (valorFuturo - valorSaque) / (prazo * 13); listaPrazos.Add(new KeyValuePair <int, decimal>(prazo, valor)); } // Renda por percentual do saldo de contas var listaSaldoPercentuais = new List <KeyValuePair <string, decimal> >(); for (decimal percentual = 0.5M; percentual <= 2.0M; percentual += 0.5M) { decimal valor = (valorFuturo - valorSaque) * percentual / 100; listaSaldoPercentuais.Add(new KeyValuePair <string, decimal>(percentual.ToString("N1").Replace(".", ","), valor)); } return(Json(new { valorFuturo, dataAposentadoria, valorSaque, idadeDependente, fatorAtuarialPensaoMorte, fatorAtuarialSemPensaoMorte, rendaPrazoIndeterminadoPensaoMorte, rendaPrazoIndeterminadoSemPensaoMorte, listaPrazos, listaSaldoPercentuais, memoria = MemoriaCalculo })); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
private void btnProcesar_Click(object sender, EventArgs e) { datos.Clear(); intervalos.Clear(); string mensajeError = ""; if (validarTab1(ref mensajeError)) { if (cargarDatos()) { if (datos.Count < 200) { MessageBox.Show("Debe ingresar una muestra mayor a 200 números. Datos encontrados: " + datos.Count()); return; } double min = datos.Min(); double max = datos.Max() + 0.001d; int numeroDeIntervalos = int.Parse(txtCantIntervalos.Text); double paso = (max - min) / (double)numeroDeIntervalos; paso = Math.Round(paso, CANTIDAD_DECIMALES); double limiteInferior = min; double limiteSuperior = min + paso; Intervalo intervalo = null; for (int i = 0; i < numeroDeIntervalos; i++) { intervalo = new Intervalo(); intervalo.numero = i + 1; intervalo.limiteInferior = Math.Round(limiteInferior, CANTIDAD_DECIMALES); intervalo.limiteSuperior = Math.Round(limiteSuperior, CANTIDAD_DECIMALES); intervalos.Add(intervalo); limiteInferior = limiteSuperior; limiteSuperior = limiteInferior + paso; } for (int i = 0; i < datos.Count; i++) { for (int j = 0; j < intervalos.Count; j++) { if (intervalos[j].limiteSuperior > datos[i]) { intervalos[j].frecuenciaObservada++; break; } } } cargarGrillaTab1(); graficar(false); lblTamanioMuestra.Text = "Tamaño de la muestra: " + datos.Count().ToString(); lblPaso.Text = "Paso: " + paso.ToString("0.0000"); lblPaso.Visible = true; btnVerDistribucion.Enabled = true; btnComparar.Enabled = true; grpInfoMuestra.Visible = true; reiniciarTab2(); } } else { MessageBox.Show(mensajeError, "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
public abstract double CalcularFrecuenciaEsperadaEnIntervalo(Intervalo intervalo, int tamanioMuestra, int cantidadIntervalos = 0);
public IActionResult GetSimulacao() { try { var sqPlano = 1; int idadeParticipante = CalcularIdadeParticipante(); int idadeMinima = CalcularIdadeMinima(idadeParticipante); decimal SRC = CalcularSRC(sqPlano); decimal inssHipotetico = CalcularINSSHipotetico(sqPlano); int carencia = CalcularCarencia(sqPlano); var valor1 = (SRC - inssHipotetico) * carencia / 15; var valor2 = (SRC * 0.25M) * carencia / 15; var valorSuplementacao = Math.Max(valor1, valor2); var dataNascimento = new DadosPessoaisProxy().BuscarPorCdPessoa(CdPessoa).First().DT_NASCIMENTO; var dataAposentadoriaPorIdade = dataNascimento.Value.AddYears(idadeMinima); var plano = new PlanoVinculadoProxy().BuscarPorContratoTrabalhoPlano(SqContratoTrabalho, sqPlano); var dataAposentadoriaPorPlano = plano.DT_INSC_PLANO.AddYears(15); var tempoServico = new TempoServicoProxy().BuscarPorCdPessoa(CdPessoa); var tempoTotal = new Intervalo(new CalculoAnosMesesDiasAlgoritmo2()); foreach (var tempo in tempoServico) { DateTime fim; if (tempo.DT_TERM_ATIVIDADE.HasValue) { fim = tempo.DT_TERM_ATIVIDADE.Value; } else { fim = DateTime.Today; } var intervaloTrabalho = new Intervalo(fim, tempo.DT_INIC_ATIVIDADE.Value, new CalculoAnosMesesDiasAlgoritmo2()); tempoTotal.Adiciona(intervaloTrabalho); } var dadosPessoais = new DadosPessoaisProxy().BuscarPorCdPessoa(CdPessoa).First(); var fatorSexo = dadosPessoais.IR_SEXO == null || dadosPessoais.IR_SEXO == "M" ? 35 : 30; var dataAposentadoriaPorTempoTrabalho = tempoTotal.Anos < fatorSexo ? tempoServico.First().DT_INIC_ATIVIDADE.Value.AddYears(fatorSexo) : tempoServico.First().DT_INIC_ATIVIDADE.Value.AddDays(tempoTotal.Dias); var listaDatas = new List <DateTime> { dataAposentadoriaPorIdade, dataAposentadoriaPorPlano, dataAposentadoriaPorTempoTrabalho }; var dataAposentadoria = listaDatas.Max(x => x); var dataReferencia = DateTime.Now; return(Json(new { valorSuplementacao, dataAposentadoria, dataReferencia })); } catch (Exception ex) { return(BadRequest(ex.Message)); } }