private string CreateTagsResourceUri(TagsResourceParameters parameters, ResourceUriType type) { switch (type) { case ResourceUriType.PreviousPage: return(Url.Link("GetTags", new { pageNumber = parameters.PageNumber - 1, pageSize = parameters.PageSize } )); case ResourceUriType.NextPage: return(Url.Link("GetTags", new { pageNumber = parameters.PageNumber + 1, pageSize = parameters.PageSize } )); default: return(Url.Link("GetTags", new { pageNumber = parameters.PageNumber, pageSize = parameters.PageSize } )); } }
public async Task <PageList <Tag> > GetAll(TagsResourceParameters parameters) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } var model = await _context.Tags.Include(c => c.Products).ThenInclude(c => c.Product).ToListAsync(); var data = _mapper.Map <List <TagEntity>, List <Tag> >(model).AsQueryable(); return(PageList <Tag> .Create(data, parameters.PageNumber, parameters.PageSize)); }
public async Task <IActionResult> onGet([FromQuery] TagsResourceParameters parameters) { var data = await _tagsService.GetAll(parameters); var previousLink = data.HasPrevious ? CreateTagsResourceUri(parameters, ResourceUriType.PreviousPage) : null; var nextLink = data.HasNext ? CreateTagsResourceUri(parameters, ResourceUriType.NextPage) : null; var paginationMetadata = new { totalCount = data.TotalCount, pageSize = data.PageSize, currentPage = data.CurrentPage, totalPages = data.TotalPages, previousLink, nextLink }; Response.Headers.Add("X-Pagination", JsonSerializer.Serialize(paginationMetadata)); return(Ok(data)); }