Exemplo n.º 1
0
        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));
            }
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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));
        }