Пример #1
0
        public ActionResult <IEnumerable <ShoppingListItemDto> > GetCategories([FromQuery] ShoppingListItemParametersDto ShoppingListItemParametersDto)
        {
            var ShoppingListItemsFromRepo = _ShoppingListItemRepository.GetShoppingListItems(ShoppingListItemParametersDto);

            var previousPageLink = ShoppingListItemsFromRepo.HasPrevious
                    ? CreateShoppingListItemsResourceUri(ShoppingListItemParametersDto,
                                                         ResourceUriType.PreviousPage)
                    : null;

            var nextPageLink = ShoppingListItemsFromRepo.HasNext
                ? CreateShoppingListItemsResourceUri(ShoppingListItemParametersDto,
                                                     ResourceUriType.NextPage)
                : null;

            var paginationMetadata = new
            {
                totalCount  = ShoppingListItemsFromRepo.TotalCount,
                pageSize    = ShoppingListItemsFromRepo.PageSize,
                pageNumber  = ShoppingListItemsFromRepo.PageNumber,
                totalPages  = ShoppingListItemsFromRepo.TotalPages,
                hasPrevious = ShoppingListItemsFromRepo.HasPrevious,
                hasNext     = ShoppingListItemsFromRepo.HasNext,
                previousPageLink,
                nextPageLink
            };

            Response.Headers.Add("X-Pagination",
                                 JsonSerializer.Serialize(paginationMetadata));

            var ShoppingListItemsDto = _mapper.Map <IEnumerable <ShoppingListItemDto> >(ShoppingListItemsFromRepo);

            return(Ok(ShoppingListItemsDto));
        }
        public PagedList <ShoppingListItem> GetShoppingListItems(ShoppingListItemParametersDto ShoppingListItemParameters)
        {
            if (ShoppingListItemParameters == null)
            {
                throw new ArgumentNullException(nameof(ShoppingListItemParameters));
            }

            var collection = _context.ShoppingListItems as IQueryable <ShoppingListItem>;

            if (!string.IsNullOrWhiteSpace(ShoppingListItemParameters.QueryString))
            {
                var QueryString = ShoppingListItemParameters.QueryString.Trim();
                collection = collection.Where(i => i.Name.Contains(QueryString) ||
                                              i.Category.Contains(QueryString));
            }

            var sieveModel = new SieveModel
            {
                Sorts   = ShoppingListItemParameters.SortOrder,
                Filters = ShoppingListItemParameters.Filters
            };

            collection = _sieveProcessor.Apply(sieveModel, collection);

            return(PagedList <ShoppingListItem> .Create(collection,
                                                        ShoppingListItemParameters.PageNumber,
                                                        ShoppingListItemParameters.PageSize));
        }
Пример #3
0
        private string CreateShoppingListItemsResourceUri(
            ShoppingListItemParametersDto ShoppingListItemParametersDto,
            ResourceUriType type)
        {
            switch (type)
            {
            case ResourceUriType.PreviousPage:
                return(Url.Link("GetShoppingListItems",
                                new
                {
                    filters = ShoppingListItemParametersDto.Filters,
                    orderBy = ShoppingListItemParametersDto.SortOrder,
                    pageNumber = ShoppingListItemParametersDto.PageNumber - 1,
                    pageSize = ShoppingListItemParametersDto.PageSize,
                    searchQuery = ShoppingListItemParametersDto.QueryString
                }));

            case ResourceUriType.NextPage:
                return(Url.Link("GetShoppingListItems",
                                new
                {
                    filters = ShoppingListItemParametersDto.Filters,
                    orderBy = ShoppingListItemParametersDto.SortOrder,
                    pageNumber = ShoppingListItemParametersDto.PageNumber + 1,
                    pageSize = ShoppingListItemParametersDto.PageSize,
                    searchQuery = ShoppingListItemParametersDto.QueryString
                }));

            default:
                return(Url.Link("GetShoppingListItems",
                                new
                {
                    filters = ShoppingListItemParametersDto.Filters,
                    orderBy = ShoppingListItemParametersDto.SortOrder,
                    pageNumber = ShoppingListItemParametersDto.PageNumber,
                    pageSize = ShoppingListItemParametersDto.PageSize,
                    searchQuery = ShoppingListItemParametersDto.QueryString
                }));
            }
        }