public IActionResult GetBarbecues([FromQuery] BarbecueResourceFilters filter) { var barbecues = barbecueRepository.Get(filter); AddPaginationMetadataHeader(urlHelper, Response, barbecues, filter); return(Ok(Mapper.Map <List <BarbecueDto> >(barbecues))); }
public PagedList <Barbecue> Get(BarbecueResourceFilters filter) { var collectionBeforePaging = context.Barbecues .Include(x => x.Participants) .OrderByDescending(x => x.Date) .AsQueryable(); if (!string.IsNullOrEmpty(filter.SearchTerm)) { var titleForWhereClause = filter.SearchTerm.Trim().ToLowerInvariant(); collectionBeforePaging = collectionBeforePaging .Where(b => b.Title.Trim().ToLowerInvariant().Contains(titleForWhereClause)); } return(PagedList <Barbecue> .Create(collectionBeforePaging, filter)); }
public static void AddPaginationMetadataHeader( IUrlHelper urlHelper, HttpResponse response, PagedList <Barbecue> barbecues, BarbecueResourceFilters filter ) { var previousPageLink = barbecues.HasPrevious ? CreateBarbecuesResourceUri(urlHelper, filter, ResourceUriType.PreviousPage) : null; var nextPageLink = barbecues.HasNext ? CreateBarbecuesResourceUri(urlHelper, filter, ResourceUriType.NextPage) : null; var paginationMetadata = new { totalCount = barbecues.TotalCount, pageSize = barbecues.PageSize, currentPage = barbecues.CurrentPage, totalPages = barbecues.TotalPages, previousPageLink = previousPageLink, nextPageLink = nextPageLink }; response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(paginationMetadata)); }