public async Task <IActionResult> CalculaRemuneracoes(DateTime inicio, DateTime fim, int pag = 1)
        {
            IEnumerable <IRemuneracao> remuneracoes;

            try
            {
                DateTime       dataFimAjustada            = new DateTime(fim.Date.Ticks).AddDays(1).AddSeconds(-1);
                PeriodoSimples periodoDoPagamentoDasHoras = new PeriodoSimples(inicio.Date, dataFimAjustada);
                remuneracoes = await _gerenciadorDeRemuneracao.CalcularRemuneracoesNoPeriodoAsync(periodoDoPagamentoDasHoras);


                //TODO reimplementar a paginação do backend (preferencialmente salvando a requisicao antes
                //var remuneracoesPorFavorecido = remuneracoes.GroupBy(rem => rem.IdFavorecido).OrderBy(g => g.Key);

                //const int pagesize = 10;
                //IEnumerable<IRemuneracao> pagina = remuneracoesPorFavorecido.Skip(pagesize * (pag - 1)).Take(pagesize).SelectMany(gr => gr).ToArray();
                //return base.Ok(pagina);


                //filtro para exibir apenas remuneracoes do periodo selecionado. (O calculo gera as remuneracoes fixas recorrentes{baseado na vigencia da regra Fixa})
                remuneracoes = remuneracoes.Where(x => periodoDoPagamentoDasHoras.Contem(x.DataDaEntrega)).OrderBy(x => x.IdFavorecido);

                return(base.Ok(remuneracoes));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex));
            }
        }