public HttpResponseMessage GetImpostoCalculado(decimal salarioMinimo) { CalcularIRInput calculo = new CalcularIRInput(); calculo.SalarioMinimo = salarioMinimo; try { var resultado = _contribuinteService.Handle(calculo); if (_contribuinteService.IsValid()) { return(Request.CreateResponse(HttpStatusCode.OK, Newtonsoft.Json.JsonConvert.SerializeObject(resultado))); } return(Request.CreateResponse(HttpStatusCode.BadRequest, _contribuinteService.Notifications)); } catch (System.Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message, ex)); } }
public CalcularIRResult Handle(CalcularIRInput input) { CalcularIRResult result = new CalcularIRResult(); try { // Recupera os contribuintes da base de dados var contribuintes = _contribuinteRepository.ObterTodos(); // Varre todos os contribuintes da base de dados. foreach (var contribuinte in contribuintes) { // Cria um novo imposto var imposto = ImpostoDeRenda.Novo(contribuinte, input.SalarioMinimo); // Verifica se o imposto está válido if (imposto.IsValid()) { result.ContribuintesImpostoDeRenda.Add(imposto); } else { base.AddNotifications(imposto.Notifications); } } // Ordena o resultado. result.ContribuintesImpostoDeRenda = result.ContribuintesImpostoDeRenda.OrderByDescending(x => x.Imposto) .ThenByDescending(x => x.Contribuinte.Nome).ToList(); } catch (Exception ex) { base.AddNotification("Error", $"Houve uma falha inesperada! Mensagem: {ex.Message}"); } return(result); }