예제 #1
0
        public Task <JurosCompostosOutputViewModel> Calcular(JurosCompostosInputViewModel viewModel)
        {
            try
            {
                var jurosCompostos = _mapper.Map <JurosCompostos>(viewModel);

                if (jurosCompostos.Validar())
                {
                    return(Task.FromResult(_mapper.Map <JurosCompostosOutputViewModel>(jurosCompostos)));
                }

                _domainNotificationManager.Add("Valores", Errors.ValoresInvalidos);
            }
            catch (InvalidOperationException)
            {
                _domainNotificationManager.Add("Pârâmetros", Errors.ErroAoCalcularJurosCompostos);
            }
            catch (OverflowException)
            {
                _domainNotificationManager.Add("Pârâmetros", Errors.EstouroMemoriaServidorAoCalcular);
            }
            catch (AutoMapperMappingException ex) when(ex.GetBaseException() is OverflowException)
            {
                _domainNotificationManager.Add("Pârâmetros", Errors.EstouroMemoriaServidorAoCalcular);
            }
            catch (Exception)
            {
                _domainNotificationManager.Add("Pârâmetros", Errors.ErroAoCalcularJurosCompostos);
            }

            return(Task.FromResult <JurosCompostosOutputViewModel>(null));
        }
 public IActionResult Get([FromQuery] JurosCompostosInputViewModel vm)
 {
     if (!ModelState.IsValid)
     {
         NotifyModelStateErrors();
         return(Response(vm));
     }
     return(Response(_jurosCompostosService.Calcular(vm).Result));
 }
            public void Deve_Calcular_Com_Tempo_Negativo()
            {
                var input = new JurosCompostosInputViewModel
                {
                    ValorInicial = 100,
                    Meses        = -6
                };

                var resultado = _jurosCompostosService.Calcular(input).Result;

                Assert.Null(resultado);
                Assert.True(_domainNotificationManager.HasNotifications());

                _domainNotificationManager.Dispose();
            }
            public void Deve_Calcular_ValorFinal_Errado()
            {
                var input = new JurosCompostosInputViewModel
                {
                    ValorInicial = 100,
                    Meses        = 6
                };

                var resultado = _jurosCompostosService.Calcular(input).Result;

                Assert.NotEqual(105.10M, resultado.ValorFinal);
                Assert.False(_domainNotificationManager.HasNotifications());

                _domainNotificationManager.Dispose();
            }
            public void Notificar_Se_ValorInicial_Zero()
            {
                var input = new JurosCompostosInputViewModel
                {
                    ValorInicial = 0,
                    Meses        = 5
                };

                var resultado = _jurosCompostosService.Calcular(input).Result;

                Assert.Null(resultado);
                Assert.True(_domainNotificationManager.HasNotifications());

                _domainNotificationManager.Dispose();
            }