private IQueryable <Reservation> AddSorting(IQueryable <Reservation> query, ReservationSortingColumn sortBy, SortingDirection sortDirection) { return((sortBy, sortDirection) switch { (ReservationSortingColumn.Date, SortingDirection.Asc) => query.OrderBy(r => r.DateTime), (ReservationSortingColumn.Date, SortingDirection.Desc) => query.OrderByDescending(r => r.DateTime), (ReservationSortingColumn.ContactName, SortingDirection.Asc) => query.OrderBy(r => r.Contact.Name), (ReservationSortingColumn.ContactName, SortingDirection.Desc) => query.OrderByDescending(r => r.Contact.Name), (ReservationSortingColumn.Ranking, SortingDirection.Asc) => query.OrderBy(r => r.Ranking), (ReservationSortingColumn.Ranking, SortingDirection.Desc) => query.OrderByDescending(r => r.Ranking), (_, _) => throw new ArgumentException("Enum value not recognized"), });
public async Task <PagedResult <ReservationListItem> > ListReservations(int pageSize, int page, ReservationSortingColumn sortBy, SortingDirection sortDirection) { var pagedResult = await UnitOfWork.Reservation.ListWithContacts(pageSize, page, sortBy, sortDirection); return(pagedResult.Convert(r => ReservationListItem.FromEntity(r))); }
public async Task <PagedResult <IReservation> > ListWithContacts(int pageSize, int page, ReservationSortingColumn sortBy, SortingDirection sortDirection) { var query = Set.Include(r => r.Contact); var result = await ListWithPaging(query, pageSize, page, q => AddSorting(q, sortBy, sortDirection)); return(result); }