private IActionResult QueryExhibitPages(IQueryable <ExhibitPage> allPages, ExhibitPageQueryArgs args) { try { var pages = allPages .FilterByIds(args.Exclude, args.IncludeOnly) .FilterByUser(args.Status, User.Identity) .FilterByStatus(args.Status, User.Identity) .FilterByTimestamp(args.Timestamp) .FilterIf(!string.IsNullOrEmpty(args.Query), x => x.Title.ToLower().Contains(args.Query.ToLower()) || x.Text.ToLower().Contains(args.Query.ToLower()) || x.Description.ToLower().Contains(args.Query.ToLower())) .FilterIf(args.Type != null, x => x.Type == args.Type) .Sort(args.OrderBy, ("id", x => x.Id), ("title", x => x.Title), ("timestamp", x => x.Timestamp)) .PaginateAndSelect(args.Page, args.PageSize, x => new ExhibitPageResult(x) { Timestamp = _referencesIndex.LastModificationCascading(ResourceType.ExhibitPage, x.Id) }); return(Ok(pages)); } catch (InvalidSortKeyException e) { return(StatusCode(422, e.Message)); } }
public IActionResult GetPagesForExhibit(int exhibitId, ExhibitPageQueryArgs args) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } args = args ?? new ExhibitPageQueryArgs(); if (args.Status == ContentStatus.Deleted && !UserPermissions.IsAllowedToGetDeleted(User.Identity)) { return(Forbid()); } var exhibit = _db.Database.GetCollection <Exhibit>(ResourceType.Exhibit.Name) .AsQueryable() .FirstOrDefault(x => x.Id == exhibitId); if (exhibit == null) { return(NotFound()); } var query = exhibit.Pages.LoadAll(_db.Database).AsQueryable(); return(QueryExhibitPages(query, args)); }
public IActionResult GetAllPages([FromQuery] ExhibitPageQueryArgs args) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } args = args ?? new ExhibitPageQueryArgs(); if (args.Status == ContentStatus.Deleted && !UserPermissions.IsAllowedToGetDeleted(User.Identity)) { return(Forbid()); } var query = _db.Database.GetCollection <ExhibitPage>(ResourceType.ExhibitPage.Name).AsQueryable(); return(QueryExhibitPages(query, args)); }