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