public FiltroAprovarRepasseDto FiltrarAprovar(FiltroAprovarRepasseDto filtro) { var query = DbSet.Include(x => x.ServicoContratadoDestino) .ThenInclude(x => x.EscopoServico) .Include(x => x.ServicoContratadoDestino) .Include(x => x.ServicoContratadoOrigem) .ThenInclude(x => x.EscopoServico) .AsNoTracking(); if (!filtro.AvaliarTodos) { query = query.Where(x => x.ServicoContratadoDestino.IdCelula == filtro.Celula); } if (filtro.AvaliarTodos) { query = FiltrarPelaCelula(filtro, query); } query = FiltrarPeloPeriodo(filtro, query); query = FiltrarPeloTipoDeConsulta(filtro, query); filtro.Total = query.Count(); var dados = query.Select(p => new GridRepasseAprovarDto { Usuario = p.Usuario, DataAlteracao = p.DataAlteracao, Id = p.Id, Data = p.DtRepasse, Destino = p.ServicoContratadoDestino.IdCelula, Origem = p.ServicoContratadoOrigem.IdCelula, Projeto = filtro.TpRepasse == 1 ? p.ServicoContratadoDestino.EscopoServico.NmEscopoServico : p.ServicoContratadoOrigem.EscopoServico.NmEscopoServico, Cliente = "", VlUnitario = p.VlUnitario, VlRepasse = p.VlTotal, Horas = p.QtdRepasse, Aprovado = p.FlStatus }); filtro.CampoOrdenacao = filtro.CampoOrdenacao.First().ToString().ToUpper() + filtro.CampoOrdenacao.Substring(1); if (filtro.OrdemOrdenacao == "asc") { dados = dados.OrderBy(x => x.GetType().GetProperty(filtro.CampoOrdenacao).GetValue(x)); } else if (filtro.OrdemOrdenacao == "desc") { dados = dados.OrderByDescending(x => x.GetType().GetProperty(filtro.CampoOrdenacao).GetValue(x)); } else { dados = dados.OrderBy(x => x.Aprovado.ElementAt(1)).ThenBy(x => x.Id); } filtro.Valores = dados.Skip((filtro.Pagina) * filtro.QuantidadePorPagina).Take(filtro.QuantidadePorPagina).ToList();; return(filtro); }
private static IQueryable <Repasse> FiltrarPeloPeriodo(FiltroAprovarRepasseDto filtro, IQueryable <Repasse> query) { if (filtro.DtInicial.HasValue && filtro.DtFinal.HasValue) { query = query.Where(x => x.DtRepasse >= filtro.DtInicial && x.DtRepasse <= filtro.DtFinal); } return(query); }
private static IQueryable <Repasse> FiltrarPelaCelula(FiltroAprovarRepasseDto filtro, IQueryable <Repasse> query) { if (!filtro.AvaliarTodos) { query = query.Where(x => x.ServicoContratadoDestino.IdCelula == filtro.Celula); } if (filtro.CelulasInteresse.Any()) { query = filtro.TpRepasse == 1 ? query.Where(x => filtro.CelulasInteresse.Contains(x.ServicoContratadoDestino.IdCelula)) : query.Where(x => filtro.CelulasInteresse.Contains(x.ServicoContratadoOrigem.IdCelula)); } return(query); }
private static IQueryable <Repasse> FiltrarPeloTipoDeConsulta(FiltroAprovarRepasseDto filtro, IQueryable <Repasse> query) { switch (filtro.TpConsulta) { case 1: query = query.Where(x => x.FlStatus == "NA"); break; case 2: query = query.Where(x => x.FlStatus == "AP"); break; case 3: query = query.Where(x => x.FlStatus == "NG"); break; } return(query); }
public FiltroAprovarRepasseDto FiltrarAprovar(FiltroAprovarRepasseDto filtro) { var result = _repasseRepository.FiltrarAprovar(filtro); return(result); }