public IActionResult FiltrarRepasses([FromBody] FiltroRepasseNivelUmDto <AprovarRepasseDto> filtroDto)
 {
     try
     {
         var resultBD = _repasseNivelUmService.FiltrarRepassesNivelUm(filtroDto);
         return(Ok(resultBD));
     }
     catch (Exception ex)
     {
         return(BadRequest());
     }
 }
        public FiltroRepasseNivelUmDto <AprovarRepasseDto> Filtrar(FiltroRepasseNivelUmDto <AprovarRepasseDto> filtro)
        {
            var periodoDoFiltro = _context.PeriodoRepasses.AsNoTracking().LastOrDefault(x => x.Id == filtro.IdPeriodoRepasse);

            var query = DbSet.AsQueryable().AsNoTracking();

            query = query.Where(x => x.DataLancamento.Month == periodoDoFiltro.DtLancamento.Month &&
                                x.DataLancamento.Year == periodoDoFiltro.DtLancamento.Year);

            if (_variables.CelulasComPermissao.Any() && filtro.CelulasEscolhidas.Length == 0)
            {
                filtro.CelulasEscolhidas = _variables.CelulasComPermissao.ToArray();
            }

            if (filtro.Id == 1)
            {
                //query = query.Where(x => Variables.CelulasComPermissao.Any(y => y == x.IdCelulaDestino));
                query = query.Where(x => filtro.CelulasEscolhidas.Contains(x.IdCelulaDestino));
            }
            else
            {
                //query = query.Where(x => Variables.CelulasComPermissao.Any(y => y == x.IdCelulaOrigem));
                query = query.Where(x => filtro.CelulasEscolhidas.Contains(x.IdCelulaOrigem));
            }

            if (!string.IsNullOrEmpty(filtro.ValorParaFiltrar))
            {
                filtro.ValorParaFiltrar = filtro.ValorParaFiltrar.Trim();

                query = query.Where(x => x.NomeClienteDestino.ToUpper().Contains(filtro.ValorParaFiltrar.ToUpper()) ||
                                    (x.Id.ToString().Contains(filtro.ValorParaFiltrar.ToUpper()) ||
                                     (x.NomeServicoDestino.ToUpper().Contains(filtro.ValorParaFiltrar.ToUpper()))));
            }

            if (filtro.Status != null)
            {
                query = query.Where(x => x.Status == filtro.Status.GetDescription());
            }


            var dados = query.Select(p => new AprovarRepasseDto
            {
                Id                     = p.Id,
                Aprovar                = ObterStatusAprovacao(p.Status),
                Status                 = p.Status,
                StatusDesc             = ObterNomeStatus(p.Status),
                IdCelulaDestino        = p.IdCelulaDestino,
                IdCelulaOrigem         = p.IdCelulaOrigem,
                ClienteDestino         = p.NomeClienteDestino,
                DataAlteracao          = p.DataAlteracao,
                QuantidadeHoras        = p.QuantidadeItens,
                ServicoDestino         = p.NomeServicoDestino,
                Usuario                = p.Usuario,
                ValorTotal             = p.ValorTotal,
                ValorUnitario          = p.ValorUnitario,
                ValorCustoProfissional = p.ValorCustoProfissional,
                Desabilita             = p.Status == SharedEnuns.StatusRepasseEacesso.NAO_ANALISADO.GetDescription() ? false : true,
                Descricao              = p.DescricaoProjeto
            });

            var lista = dados.ToList();


            filtro.CampoOrdenacao = filtro.CampoOrdenacao.First().ToString().ToUpper() + filtro.CampoOrdenacao.Substring(1);
            if (filtro.OrdemOrdenacao == "asc")
            {
                lista = lista.OrderBy(x => x.GetType().GetProperty(filtro.CampoOrdenacao).GetValue(x)).ToList();
            }
            else if (filtro.OrdemOrdenacao == "desc")
            {
                lista = lista.OrderByDescending(x => x.GetType().GetProperty(filtro.CampoOrdenacao).GetValue(x)).ToList();
            }
            else
            {
                lista = lista.OrderBy(x => x.Status).ThenBy(x => x.IdCelulaOrigem).ThenBy(y => y.ClienteDestino).ToList();
            }

            filtro.Total   = dados.Count();
            filtro.Valores = lista.Skip((filtro.Pagina) * filtro.QuantidadePorPagina).Take(filtro.QuantidadePorPagina).ToList();
            return(filtro);
        }
 public FiltroRepasseNivelUmDto <AprovarRepasseDto> FiltrarRepassesNivelUm(FiltroRepasseNivelUmDto <AprovarRepasseDto> filtro) => _repasseNivelUmRepository.Filtrar(filtro);