public async Task <IActionResult> CalculaJuros(CalculaJurosViewModel viewModel)
        {
            try
            {
                var validator = new CalculaJurosViewModelValidator();
                var result    = validator.Validate(viewModel);

                if (!result.IsValid)
                {
                    return(BadRequest(new { errors = result.Errors.Select(s => s.ErrorMessage).ToList() }));
                }

                HttpClient client   = new HttpClient();
                var        response = await client.GetAsync("https://api-obter-juros.azurewebsites.net/api/Juros/taxaJuros");

                var juros = JsonConvert.DeserializeObject <ResponseObterJuros>(await response.Content.ReadAsStringAsync());

                var jc    = Math.Pow(Convert.ToDouble(1 + juros.taxa), viewModel.meses);
                var final = jc * Convert.ToDouble(viewModel.valorInicial);

                return(Ok(new { valorFinal = final.ToString("F") }));
            }
            catch (Exception e)
            {
                return(BadRequest(new { errors = new string[] { e.Message } }));
            }
        }
Beispiel #2
0
        public decimal Calcular(CalculaJurosViewModel calculaJurosViewModel)
        {
            if (calculaJurosViewModel == null)
            {
                throw new System.ArgumentNullException(nameof(calculaJurosViewModel));
            }

            var informacoesCalculoJuros = _mapper.Map <InformacoesCalculoJuros>(calculaJurosViewModel);

            return(_calculoJurosBusiness.Calcular(informacoesCalculoJuros));
        }
Beispiel #3
0
        public IActionResult CalculaJuros([FromQuery] CalculaJurosViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                var valorFinal = _calculaJurosApplication.Calcular(viewModel);

                return(Ok(valorFinal));
            }
            else
            {
                return(BadRequest());
            }
        }
Beispiel #4
0
        public IActionResult PostCalculaJurosViewModel(CalculaJurosViewModel calculaJurosViemModel)
        {
            if (!ModelState.IsValid)
            {
                return(Response(calculaJurosViemModel));
            }

            try
            {
                var retorno = _calculoJurosService.Calcular(calculaJurosViemModel);
                return(Response(retorno.ToString("N2")));
            }
            catch (BusinessException ex)
            {
                return(new ObjectResult($"Erro ao calcular juros: {ex.Message}"));
            }
        }
Beispiel #5
0
        public void SetUp()
        {
            serviceCollection = new ServiceCollection();

            AutoMapperSetup.AddAutoMapperSetup(serviceCollection);

            InjectionDependencies.RegisterDependencies(serviceCollection);

            var serviceProvider = serviceCollection.BuildServiceProvider();

            var calculoJurosService = serviceProvider.GetService <ICalculoJurosService>();

            _calculaJurosController = new CalculaJurosController(calculoJurosService);

            calculaJurosViewModelMock = Substitute.For <CalculaJurosViewModel>();
            calculaJurosViewModelMock.ValorInicial = 100;
            calculaJurosViewModelMock.TempoEmMeses = 5;

            calculoJuros    = "105,10";
            resultadoOkMock = _calculaJurosController.Ok(new { success = true, data = calculoJuros });

            resultadoErroMock = new ObjectResult($"Erro ao calcular juros: O tempo em meses não pode ser negativo!");
        }
Beispiel #6
0
 public double Calcular(CalculaJurosViewModel viewModel)
 {
     return(_calculaJurosService.Calcular(viewModel.ValorInicial, viewModel.Meses));
 }