Ejemplo n.º 1
0
        public IActionResult GetBarbecues([FromQuery] BarbecueResourceFilters filter)
        {
            var barbecues = barbecueRepository.Get(filter);

            AddPaginationMetadataHeader(urlHelper, Response, barbecues, filter);

            return(Ok(Mapper.Map <List <BarbecueDto> >(barbecues)));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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));
        }