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);
        }
 public ActionResult<IEnumerable<Contribuinte>> ObterTodos()
 {
     var contribuintes = _contribuinteRepository.ObterTodos();
     return Created("/api/contribuinte/obtercontribuintes", contribuintes);
 }