public async Task <ProcurarSaida> Procurar(ProcurarPeriodoEntrada procurarEntrada) { var query = _efContext.Periodos .AsNoTracking() .Where(x => x.IdUsuario == procurarEntrada.IdUsuario) .AsQueryable(); if (!string.IsNullOrEmpty(procurarEntrada.Nome)) { query = query.Where(x => x.Nome.IndexOf(procurarEntrada.Nome, StringComparison.InvariantCultureIgnoreCase) != -1); } if (procurarEntrada.Data.HasValue) { query = query.Where(x => x.DataInicio <= procurarEntrada.Data.Value.Date && x.DataFim >= procurarEntrada.Data.Value.Date); } switch (procurarEntrada.OrdenarPor) { case PeriodoOrdenarPor.DataFim: query = procurarEntrada.OrdenarSentido == "ASC" ? query.OrderBy(x => x.DataFim) : query.OrderByDescending(x => x.DataFim); break; case PeriodoOrdenarPor.DataInicio: query = procurarEntrada.OrdenarSentido == "ASC" ? query.OrderBy(x => x.DataInicio) : query.OrderByDescending(x => x.DataInicio); break; case PeriodoOrdenarPor.Nome: query = procurarEntrada.OrdenarSentido == "ASC" ? query.OrderBy(x => x.Nome) : query.OrderByDescending(x => x.Nome); break; default: query = procurarEntrada.OrdenarSentido == "ASC" ? query.OrderBy(x => x.Id) : query.OrderByDescending(x => x.Id); break; } if (procurarEntrada.Paginar()) { var pagedList = await query.ToPagedListAsync(procurarEntrada.PaginaIndex.Value, procurarEntrada.PaginaTamanho.Value); return(new ProcurarSaida( pagedList.ToList().Select(x => new PeriodoSaida(x)), procurarEntrada.OrdenarPor.ToString(), procurarEntrada.OrdenarSentido, pagedList.TotalItemCount, pagedList.PageCount, procurarEntrada.PaginaIndex, procurarEntrada.PaginaTamanho)); } else { var totalRegistros = query.Count(); return(new ProcurarSaida( query.ToList().Select(x => new PeriodoSaida(x)), procurarEntrada.OrdenarPor.ToString(), procurarEntrada.OrdenarSentido, totalRegistros)); } }
public async Task <ProcurarSaida> Procurar(ProcurarPeriodoEntrada procurarEntrada) { var query = _efContext.Periodos .AsNoTracking() .AsQueryable(); if (!string.IsNullOrEmpty(procurarEntrada.Nome)) { query = query.Where(x => x.Nome.IndexOf(procurarEntrada.Nome, StringComparison.InvariantCultureIgnoreCase) != -1); } if (procurarEntrada.Data.HasValue) { query = query.Where(x => x.DataInicio <= procurarEntrada.Data.Value.Date && x.DataFim >= procurarEntrada.Data.Value.Date); } query = query.OrderByProperty(procurarEntrada.OrdenarPor, procurarEntrada.OrdenarSentido); if (procurarEntrada.Paginar()) { var pagedList = await query.ToPagedListAsync(procurarEntrada.PaginaIndex.Value, procurarEntrada.PaginaTamanho.Value); return(new ProcurarSaida( pagedList.ToList().Select(x => new PeriodoSaida(x)), procurarEntrada.OrdenarPor, procurarEntrada.OrdenarSentido, pagedList.TotalItemCount, pagedList.PageCount, procurarEntrada.PaginaIndex, procurarEntrada.PaginaTamanho)); } else { var totalRegistros = await query.CountAsync(); return(new ProcurarSaida( (await query.ToListAsync()).Select(x => new PeriodoSaida(x)), procurarEntrada.OrdenarPor, procurarEntrada.OrdenarSentido, totalRegistros)); } }