Ejemplo n.º 1
0
        public decimal CalcularTruncandoEmDuasCasasDecimais(decimal valorInicial, int meses)
        {
            decimal taxaJuros;

            try
            {
                taxaJuros = _taxaJurosServico.ObterTaxaJuros();
            }
            catch (Exception exception)
            {
                Notificar(string.Format("Não foi possível obter uma taxa de juros: {0}", exception.Message));

                return(0);
            }

            JurosCompostos jurosCompostos = new JurosCompostos {
                ValorInicial = valorInicial, TaxaJuros = taxaJuros, Meses = meses
            };

            if (!Validar(new ValidacaoJurosCompostos(), jurosCompostos))
            {
                return(0);
            }

            decimal valorCalculado = jurosCompostos.Calcular();

            decimal valorTruncado = _truncarValoresServico.TruncarValor(valorCalculado, 2);

            return(valorTruncado);
        }
Ejemplo n.º 2
0
        public void Deve_Calcular_Juros_Compostos()
        {
            // Arrange
            var     tempo        = TempoEmMeses.Criar(5).Value;
            decimal taxa         = 0.01m;
            decimal valorInicial = 100m;

            // Act
            var valorCalculado = JurosCompostos.Calcular(valorInicial, tempo, taxa);

            // Assert
            Assert.Equal(105.10100501m, valorCalculado);
        }
Ejemplo n.º 3
0
        public void DeveCalcularJurosCompostos()
        {
            JurosCompostos jurosCompostos = new JurosCompostos();

            jurosCompostos.ValorInicial = 100;
            jurosCompostos.TaxaJuros    = 0.01M;
            jurosCompostos.Meses        = 5;

            decimal valorEsperado = 105.10100501m;

            decimal valorAtual = jurosCompostos.Calcular();

            Assert.AreEqual(valorEsperado, valorAtual);
        }
Ejemplo n.º 4
0
        public async Task <double> GetAsync([FromQuery(Name = "valorinicial")] double?valorInicial,
                                            [FromQuery(Name = "meses")] int?meses)
        {
            if (valorInicial == null)
            {
                throw new ArgumentNullException("valorinicial");
            }

            if (meses == null)
            {
                throw new ArgumentNullException("meses");
            }

            return(JurosCompostos.Calcular(valorInicial.Value, await RecuperarTaxaDeJurosAsync(), meses.Value));
        }
Ejemplo n.º 5
0
        public async Task <string> Executar(decimal valorInicial, int meses)
        {
            if (valorInicial < 1)
            {
                this.Erros.Add("valorInicial", "Informe um valor maior que 0");
                return(null);
            }
            if (meses < 1)
            {
                this.Erros.Add("meses", "Informe um valor maior que 0");
                return(null);
            }

            var juros = await this.apiJurosClient.ObterTaxa();

            var            jurosDecimal   = Convert.ToDecimal(juros);
            JurosCompostos jurosCompostos = new JurosCompostos(valorInicial, jurosDecimal, meses);
            var            resultado      = jurosCompostos.Calcular().ToString("N2");

            return(resultado);
        }
        public async Task <Result <decimal> > Handle(CalculaJurosCompostosCommand request, CancellationToken cancellationToken)
        {
            // valida tempo
            var tempoResult = TempoEmMeses.Criar(request.TempoEmMeses);

            if (tempoResult.IsFailure)
            {
                return(Result.Failure <decimal>(tempoResult.Error));
            }

            // buscar taxa
            var taxaResult = await _taxaServices.BuscaTaxa(cancellationToken);

            if (taxaResult.IsFailure)
            {
                return(Result.Failure <decimal>(taxaResult.Error));
            }

            var taxa = taxaResult.Value;

            var valor = JurosCompostos.Calcular(request.ValorInicial, tempoResult.Value, taxa);

            return(Result.Success(valor));
        }
Ejemplo n.º 7
0
 public void Calcular_ValorCorreto(double valorInicial, int meses, double valorFinal)
 {
     Assert.AreEqual(valorFinal, JurosCompostos.Calcular(valorInicial, 0.01d, meses));
 }