public void GetAllTest() { var tagQueryArgs = new TagQueryArgs(); MyMvc .Controller <TagsController>() .Calling(c => c.GetAll(tagQueryArgs)) .ShouldReturn() .Ok(); }
public IActionResult GetAll([FromQuery] TagQueryArgs args) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (args.Status == ContentStatus.Deleted && !UserPermissions.IsAllowedToGetDeleted(User.Identity)) { return(Forbid()); } var query = _db.Database.GetCollection <Tag>(ResourceType.Tag.Name).AsQueryable(); try { var tags = query .FilterByIds(args.Exclude, args.IncludeOnly) .FilterByUser(args.Status, User.Identity) .FilterByStatus(args.Status, User.Identity) .FilterByTimestamp(args.Timestamp) .FilterByUsage(args.Used) .FilterIf(!string.IsNullOrEmpty(args.Query), x => x.Title.ToLower().Contains(args.Query.ToLower()) || x.Description.ToLower().Contains(args.Query.ToLower())) .Sort(args.OrderBy, ("id", x => x.Id), ("title", x => x.Title), ("timestamp", x => x.Timestamp)) .PaginateAndSelect(args.Page, args.PageSize, x => new TagResult(x) { Timestamp = _referencesIndex.LastModificationCascading(ResourceType.Tag, x.Id) }); return(Ok(tags)); } catch (InvalidSortKeyException e) { ModelState.AddModelError(nameof(args.OrderBy), e.Message); return(BadRequest(ModelState)); } }