/// <summary>
        /// VF = VI x (1  + taxa)^tempo
        ///Fórmula do montante em juros compostos
        ///Onde:
        ///VF é o valor final obtido na aplicação, ou seja, o saldo após a aplicação do juros;
        ///taxa é a taxa de juros aplicada, em porcentagem;
        ///VI é o capital ou valor inicial aplicado;
        ///tempo é o tempo total da aplicação.
        /// </summary>
        /// <param name="calcularJuros"></param>
        /// <returns>Valor Final</returns>
        public decimal CalculaJuros(CalcularJuros calcularJuros)
        {
            double  taxa       = 0.01;
            decimal valorFinal = Convert.ToDecimal(calcularJuros.ValorInicial * Math.Pow(1 + taxa, calcularJuros.Tempo));

            return(HelpersService.TruncateDecimal2(valorFinal));
        }
Exemplo n.º 2
0
        public void Calculo_ComTempoMenorOuIgualZero_DeveRetornarZero(int tempo)
        {
            var calculaJuros = new CalcularJuros(VALID_VALOR_INICIAL, VALID_TAXA_JUROS, tempo);

            var resultado = calculaJuros.Calcular();

            Assert.Equal(0, resultado);
        }
Exemplo n.º 3
0
        public void Calculo_ComTaxaJurosMenorOuIgualZero_DeveRetornarZero(decimal taxaJuros)
        {
            var calculaJuros = new CalcularJuros(VALID_VALOR_INICIAL, taxaJuros, VALID_TEMPO);

            var resultado = calculaJuros.Calcular();

            Assert.Equal(0, resultado);
        }
Exemplo n.º 4
0
        public void Calculo_ComValorMenorOuIgualZero_DeveRetornarZero(decimal valorInicial)
        {
            var calculaJuros = new CalcularJuros(valorInicial, VALID_TAXA_JUROS, VALID_TEMPO);

            var resultado = calculaJuros.Calcular();

            Assert.Equal(0, resultado);
        }
Exemplo n.º 5
0
        public void Tempo_DeveSerMaiorQueZero()
        {
            var calculaJuros = new CalcularJuros(VALID_VALOR_INICIAL, VALID_TAXA_JUROS, 1);

            var resultado = calculaJuros.IsValid();

            Assert.True(resultado);
            Assert.Empty(calculaJuros.ValidationResult.Errors);
        }
Exemplo n.º 6
0
        public void TaxaJuros_DeveSerMaiorQueZero()
        {
            var calculaJuros = new CalcularJuros(VALID_VALOR_INICIAL, 0.001M, VALID_TEMPO);

            var resultado = calculaJuros.IsValid();

            Assert.True(resultado);
            Assert.Empty(calculaJuros.ValidationResult.Errors);
        }
Exemplo n.º 7
0
        public void ValorInicial_DeveSerMaiorQueZero()
        {
            var calculaJuros = new CalcularJuros(0.001M, VALID_TAXA_JUROS, VALID_TEMPO);

            var resultado = calculaJuros.IsValid();

            Assert.True(resultado);
            Assert.Empty(calculaJuros.ValidationResult.Errors);
        }
Exemplo n.º 8
0
        public void TestCalcularJurosCompostoTruncate()
        {
            var valorEsperado = 105.62M;
            var calcularJuros = new CalcularJuros(100.50, 5);

            var retorno = _calculaJurosService.CalculaJuros(calcularJuros);

            Assert.Equal(valorEsperado, retorno);
        }
Exemplo n.º 9
0
        public void Tempo_NaoDeveSerMenorOuIgualZero()
        {
            var calculaJuros = new CalcularJuros(VALID_VALOR_INICIAL, VALID_TAXA_JUROS, 0);

            var resultado = calculaJuros.IsValid();

            Assert.False(resultado);
            Assert.NotNull(calculaJuros.ValidationResult.Errors);
            Assert.NotEmpty(calculaJuros.ValidationResult.Errors);
            Assert.NotNull(calculaJuros.ValidationResult.Errors.FirstOrDefault(_ => _.ErrorMessage == "O valor do tempo deve ser maior que zero."));
        }
Exemplo n.º 10
0
        public void ValorInicial_NaoDeveSerMenorOuIgualZero()
        {
            var calculaJuros = new CalcularJuros(0, VALID_TAXA_JUROS, VALID_TEMPO);

            var resultado = calculaJuros.IsValid();

            Assert.False(resultado);
            Assert.NotNull(calculaJuros.ValidationResult.Errors);
            Assert.NotEmpty(calculaJuros.ValidationResult.Errors);
            Assert.NotNull(calculaJuros.ValidationResult.Errors.FirstOrDefault(_ => _.ErrorMessage == "O valor inicial deve ser maior que zero."));
        }
Exemplo n.º 11
0
        public void Calcular_ComValorInicial100TaxaDeJuros0Virgula01Tempo5_DeveRetornar105Virgula10()
        {
            var taxaDeJuros  = 0.01M;
            var valorInicial = 100M;
            var tempo        = 5;
            var esperado     = 105.10M;
            var calculaJuros = new CalcularJuros(valorInicial, taxaDeJuros, tempo);

            var resultado = calculaJuros.Calcular();

            Assert.Equal(esperado, resultado);
        }
Exemplo n.º 12
0
        public IActionResult Get(double valorInicial, int meses)
        {
            try
            {
                var calculaJuros = new CalcularJuros(valorInicial, meses);

                decimal valorFinal = _calculaJurosService.CalculaJuros(calculaJuros);
                return(Ok(valorFinal.ToString("N2")));
            }
            catch (Exception ex)
            {
                return(BadRequest($"Erro: {ex.Message}"));
            }
        }
Exemplo n.º 13
0
        public ActionResult <decimal> Getcalculajuros(decimal valorinicia, int meses)
        {
            try
            {
                var calcularJuros = new CalcularJuros();
                calcularJuros.CalcularTaxaJuros(valorinicia, meses);

                var calcularJurosDto = _mapper.Map <CalcularJurosDto>(calcularJuros);
                return(StatusCode(StatusCodes.Status200OK, calcularJurosDto));
            }

            catch (Exception)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, "Error ao tentat obter os dados"));
            }
        }
Exemplo n.º 14
0
        public async Task <decimal> Calcular(decimal valorInicial, int tempo)
        {
            decimal juros;

            try
            {
                juros = await _taxaJurosService.GetTaxaJuros();
            }
            catch
            {
                throw new Exception("Não foi possível estabelecer conexão com o serviço TaxaJuros.");
            }
            var calculadora = new CalcularJuros(valorInicial, juros, tempo);

            if (!calculadora.IsValid())
            {
                throw new ArgumentException("Não foi possivel realizar o calculo de Juros, os valores devem ser maiores que zero.");
            }
            return(calculadora.Calcular());
        }
 public IActionResult CalcularJuros([FromQuery] CalcularJuros cmd)
 {
     return(OkResponse(cmd, _calcularJuros));
 }