private IQueryable <MesReferencia> ObterBase(MesReferenciaSort sort, bool ascending, string mesAno) { IQueryable <MesReferencia> query = dataContext.MesReferencia.AsNoTracking(); switch (sort) { case MesReferenciaSort.DataInicioMesReferencia: if (ascending) { query = query.OrderBy(a => a.DataInicio == null ? 0 : 1).ThenBy(a => a.DataInicio); } else { query = query.OrderByDescending(a => a.DataInicio == null ? 0 : 1).ThenByDescending(a => a.DataInicio); } break; case MesReferenciaSort.DataFinalMesReferencia: if (ascending) { query = query.OrderBy(a => a.DataTermino == null ? 0 : 1).ThenBy(a => a.DataTermino); } else { query = query.OrderByDescending(a => a.DataTermino == null ? 0 : 1).ThenByDescending(a => a.DataTermino); } break; case MesReferenciaSort.MesAno: default: query = query.SortBy(x => x.MesAno, ascending); break; } return(query.WhereIfNotNull(x => x.MesAno.ToUpper().Contains(mesAno.ToString()), mesAno)); }
public CommandResult <PaginatedQueryResult <MesReferencia> > ObterPaginado(int pagina, int quantidade, MesReferenciaSort sort, bool ascending, string mesAno) { var listaBase = ObterBase(sort, ascending, mesAno); var total = listaBase.Count(); var skip = Pagination.PagesToSkip(quantidade, total, pagina); var resultado = new PaginatedQueryResult <MesReferencia>() { Total = total, Data = listaBase.Skip(skip).Take(quantidade).ToArray() }; return(CommandResult <PaginatedQueryResult <MesReferencia> > .Valid(resultado)); }
public CommandResult <IReadOnlyCollection <MesReferencia> > Obter(MesReferenciaSort sort, bool ascending, string mesAno) { var resultado = ObterBase(sort, ascending, mesAno).ToArray(); return(CommandResult <IReadOnlyCollection <MesReferencia> > .Valid(resultado)); }