public async Task <IActionResult> Get(
            [FromServices] ICalculadoraJuros calculadoraJurosCompostoService,
            [FromQuery] CalculaJurosRequestDTO requestData)
        {
            try
            {
                var valorInicial = new CalculadoraJurosValorInicial(requestData.ValorInicial);
                var meses        = new CalculadoraJurosMeses(requestData.Meses);

                var jurosComposto = await calculadoraJurosCompostoService.CalculaJurosAsync(valorInicial, meses);

                return(new OkObjectResult(jurosComposto.ToString()));
            }
            catch (InvalidValueObjectDataException invalidDataEx)
            {
                return(new BadRequestObjectResult($"{invalidDataEx.Message} Valor informado: {invalidDataEx.Value}"));
            }
            catch (Exception)
            {
                return(new ObjectResult("Ocorreu um erro inesperado no servidor. Entre em contato com nosso suporte")
                {
                    StatusCode = 500,
                });
            }
        }
        public async Task <CalculadoraJurosDecimalPositivo> CalculaJurosAsync(CalculadoraJurosValorInicial valorInicial, CalculadoraJurosMeses numeroMeses)
        {
            var taxaJuros = await _taxaJurosAPIService.ObterTaxaJuros();

            var valorFinal = CalcularValorDoJurosComposto(valorInicial.ToDouble(), numeroMeses.ToInt(), taxaJuros.ToDecimal());

            return(new CalculadoraJurosDecimalPositivo(valorFinal));
        }
        public void CalculadoraJurosValorInicialComSucesso(decimal valor)
        {
            var decimalPositivo = new CalculadoraJurosValorInicial(valor);
            var valorEsperado   = valor;

            var cultureInfo = CultureInfo.GetCultureInfo("pt-BR");

            Assert.Equal(valorEsperado, decimalPositivo.ToDecimal());
            Assert.Equal(valorEsperado.ToString("0.00", cultureInfo), decimalPositivo.ToString());
        }