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 })); } }
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)); }
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)); }