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