Example #1
0
        private void VerificarSalvamento(string linha)
        {
            if (_dadosProntosParaSalvar && linha?.ToUpperInvariant() == BotoesEnum.SIM.ToString())
            {
                Console.WriteLine();
                Console.WriteLine("Simulando...");
                Console.WriteLine();
                var simulacaoJuros = new JurosDados();
                try
                {
                    simulacaoJuros.ValorAporteMensal = decimal.Parse(_dadosJuros[0].Valor);
                    simulacaoJuros.TaxaJurosMensal   = double.Parse(_dadosJuros[1].Valor);
                    simulacaoJuros.TempoResgate      = int.Parse(_dadosJuros[2].Valor);
                }
                catch (Exception e)
                {
                    _erro = e.Message;
                    Console.WriteLine("Erro ao persistir dados. Verifique os valores informados e tente novamente.");
                    Console.ReadLine();
                }
                try
                {
                    var retorno = this._jurosRepositorio.PostJurosRepositorio(simulacaoJuros).GetAwaiter().GetResult();

                    this._jurosRepositorio.Salvar(new JurosSaida
                    {
                        Meses = retorno.TempoResgate,
                        PatrimonioJurosComposto = retorno.JurosComposto,
                        PatrimonioJurosSimples  = retorno.JurosSimples,
                        AporteMensal            = simulacaoJuros.ValorAporteMensal,
                        HorasSimulado           = DateTime.Now
                    });

                    Console.WriteLine("Simulação Efetuada com sucesso!");

                    Console.WriteLine($"Em {retorno.TempoResgate} mes(es) seu Patrimônio Acumulado em Juros Compostos terá um valor de" +
                                      $" R${Math.Round(retorno.JurosComposto, 2)} ");

                    Console.WriteLine($"Em {retorno.TempoResgate} mes(es) seu Patrimônio Acumulado em Juros Simples terá um valor " +
                                      $"de R${Math.Round(retorno.JurosSimples, 2)} ");

                    Console.WriteLine();
                    Console.WriteLine("Para simular novamente, basta pressionar ENTER.");
                    Console.ReadLine();
                }
                catch (Exception e)
                {
                    if (e.Message == "Os valores informados devem ser maiores que 0.")
                    {
                        Console.WriteLine(e.Message);
                        Console.WriteLine("Para simular novamente, basta pressionar ENTER.");
                        Console.ReadLine();
                    }
                    else
                    {
                        throw e;
                    }
                }
            }
        }
Example #2
0
        public async Task <JurosApresentacao> GetJurosComposto(JurosDados entrada)
        {
            JurosApresentacao retorno = new JurosApresentacao();

            if (entrada.TaxaJurosMensal <= 0 || entrada.TempoResgate <= 0 || entrada.ValorAporteMensal <= 0)
            {
                retorno.Erro = "Os valores informados devem ser maiores que 0.";
                throw new Exception("Os valores informados devem ser maiores que 0.");
            }
            else
            {
                HttpResponseMessage response = client.PostAsJsonAsync(
                    "api/juros", entrada).GetAwaiter().GetResult();

                response.EnsureSuccessStatusCode();

                if (response.IsSuccessStatusCode)
                {
                    retorno.Erro = null;
                    var dados = await response.Content.ReadAsStringAsync();

                    retorno = JsonConvert.DeserializeObject <JurosApresentacao>(dados);
                }
            }
            return(retorno);
        }
Example #3
0
        private async Task <JurosApresentacao> InserirItensInvalidos()
        {
            var dados = new JurosDados {
                TaxaJurosMensal = 2, TempoResgate = 0, ValorAporteMensal = 0
            };

            return(await _fachada.GetJurosComposto(dados));
        }
Example #4
0
        private static decimal CalcularJurosSimples(JurosDados entrada, decimal montante, decimal jurosSimples)
        {
            for (int i = 0; i < CalcularMeses(entrada); i++)
            {
                jurosSimples += (CalcularPorcentagemSobreMontante(montante, decimal.Parse(entrada.TaxaJurosMensal.ToString()))) + montante;
            }

            return(jurosSimples);
        }
Example #5
0
        private static decimal CalcularJurosComposto(JurosDados entrada, decimal montante, decimal jurosComposto, decimal valorInicialMontante)
        {
            for (int i = 0; i < CalcularMeses(entrada); i++)
            {
                valorInicialMontante = i == 0 ? (CalcularPorcentagemSobreMontante(montante, decimal.Parse(entrada.TaxaJurosMensal.ToString()))) + entrada.ValorAporteMensal : valorInicialMontante;
                jurosComposto       += i == 0 ? valorInicialMontante : (montante * decimal.Parse(entrada.TaxaJurosMensal.ToString()) / 100) + valorInicialMontante;

                montante = jurosComposto;
            }
            return(jurosComposto);
        }
Example #6
0
        public async Task <JurosApresentacao> CalcularJurosComposto(JurosDados entrada)
        {
            decimal montante             = entrada.ValorAporteMensal;
            decimal jurosSimples         = 0;
            decimal jurosComposto        = 0;
            decimal valorInicialMontante = 0;

            jurosSimples = CalcularJurosSimples(entrada, montante, jurosSimples);

            montante = entrada.ValorAporteMensal;

            jurosComposto = CalcularJurosComposto(entrada, montante, jurosComposto, valorInicialMontante);

            var jurosRetorno = new JurosApresentacao
            {
                JurosComposto = decimal.Parse(jurosComposto.ToString()),
                JurosSimples  = decimal.Parse(jurosSimples.ToString()),
                TempoResgate  = entrada.TempoResgate
            };

            return(jurosRetorno);
        }
Example #7
0
 public async Task <JurosApresentacao> Get(JurosDados juros)
 {
     return(_jurosNegocio.CalcularJurosComposto(juros).GetAwaiter().GetResult());
 }
Example #8
0
 public async Task <JurosApresentacao> PostJurosRepositorio(JurosDados entrada)
 {
     return(await _jurosFachada.GetJurosComposto(entrada));
 }
Example #9
0
 private static int CalcularMeses(JurosDados entrada)
 {
     return(entrada.TempoResgate * 12);
 }