コード例 #1
0
        private string CreateFeedbacksResourceUri(FeedbackResourceParameters feedbackResourceParameters, ResourceUriType type)
        {
            switch (type)
            {
            case ResourceUriType.PreviousPage:
                return(_urlHelper.Link("GetFeedbacks",
                                       new
                {
                    orderBy = feedbackResourceParameters.OrderBy,
                    pageNumber = feedbackResourceParameters.PageNumber - 1,
                    pageSize = feedbackResourceParameters.PageSize
                }));

            case ResourceUriType.NextPage:
                return(_urlHelper.Link("GetFeedbacks",
                                       new
                {
                    orderBy = feedbackResourceParameters.OrderBy,
                    pageNumber = feedbackResourceParameters.PageNumber + 1,
                    pageSize = feedbackResourceParameters.PageSize
                }));

            default:
                return(_urlHelper.Link("GetFeedbacks",
                                       new
                {
                    orderBy = feedbackResourceParameters.OrderBy,
                    pageNumber = feedbackResourceParameters.PageNumber,
                    pageSize = feedbackResourceParameters.PageSize
                }));
            }
        }
コード例 #2
0
        public PagedList <Feedback> GetFeedbacks(FeedbackResourceParameters feedbackResourceParameters)
        {
            var collectionBeforePaging =
                _context.Feedbacks.ApplySort(feedbackResourceParameters.OrderBy,
                                             _propertyMappingService.GetPropertyMapping <FeedbackDto, Feedback>());

            return(PagedList <Feedback> .Create(collectionBeforePaging, feedbackResourceParameters.PageNumber, feedbackResourceParameters.PageSize));
        }
コード例 #3
0
        public IActionResult GetFeedbacks([FromQuery] FeedbackResourceParameters feedbackResourceParameters)
        {
            var feedbacksFromRepo = _feedbackRepository.GetFeedbacks(feedbackResourceParameters);

            if (feedbacksFromRepo == null)
            {
                return(NotFound());
            }

            var previousPageLink = feedbacksFromRepo.HasPrevious ?
                                   CreateFeedbacksResourceUri(feedbackResourceParameters,
                                                              ResourceUriType.PreviousPage) : null;

            var x = CreateFeedbacksResourceUri(feedbackResourceParameters,
                                               ResourceUriType.NextPage);

            var nextPageLink = feedbacksFromRepo.HasNext ?
                               CreateFeedbacksResourceUri(feedbackResourceParameters,
                                                          ResourceUriType.NextPage) : null;

            var paginationMetadata = new
            {
                totalCount       = feedbacksFromRepo.TotalCount,
                pageSize         = feedbacksFromRepo.PageSize,
                currentPage      = feedbacksFromRepo.CurrentPage,
                totalPages       = feedbacksFromRepo.TotalPages,
                previousPageLink = previousPageLink,
                nextPageLink     = nextPageLink
            };

            Response.Headers.Add("X-Pagination",
                                 Newtonsoft.Json.JsonConvert.SerializeObject(paginationMetadata));

            var feedbacks = _mapper.Map <IEnumerable <FeedbackDto> >(feedbacksFromRepo);

            return(Ok(feedbacks));
        }