示例#1
0
 public static IQueryable <T> ApplyPaging <T>(this IQueryable <T> efQuery,
                                              IPaginateable pagination)
 {
     return(efQuery
            .Skip((pagination.PageNumber - 1) * pagination.PageSize)
            .Take(pagination.PageSize));
 }
示例#2
0
        public Uri GetUri(string requestRoute, IPaginateable paginationData = null)
        {
            var uri = new Uri(_baseUri + requestRoute);

            if (paginationData == null)
            {
                return(uri);
            }

            return(new Uri(uri.ToString()
                           .AppendQueryString(PageNumber, paginationData.PageNumber.ToString())
                           .AppendQueryString(PageSize, paginationData.PageSize.ToString())));
        }
示例#3
0
        public PaginationQuery(IPaginateable pagination)
        {
            PageNumber =
                pagination?.PageNumber < 1 ? _defaultPageNumber
                : pagination.PageNumber;

            PageSize =
                pagination.PageSize <1 ? _defaultPageSize
                : pagination.PageSize> _maxPageSize ? _maxPageSize
                : pagination.PageSize;

            IsApplied =
                !(pagination.PageSize < 1 && pagination.PageNumber < 1);
        }
示例#4
0
        public PaginationQuery(IPaginateable pagination, PaginationSettings settings)
        {
            PageNumber =
                pagination?.PageNumber < 1 ? _defaultPageNumber
                : pagination.PageNumber;

            PageSize =
                pagination.PageSize <1 ? settings.DefaultPageSize
                : pagination.PageSize> settings.MaxPageSize ? settings.MaxPageSize
                : pagination.PageSize;

            IsApplied =
                !(pagination.PageSize < 1 && pagination.PageNumber < 1);
        }
示例#5
0
        public static PagedResponse <T> CreatePaginatedResponse <T>(
            IUriService uriService,
            IPaginateable pagination,
            List <T> response, string requestRoute,
            int?total)
        {
            var nextPage = pagination.PageNumber >= 1
                ? uriService.GetUri(requestRoute,
                                    new PaginationQuery
            {
                PageNumber = pagination.PageNumber + 1,
                PageSize   = pagination.PageSize
            }).ToString()
                : null;

            var previousPage = pagination.PageNumber - 1 >= 1
                ? uriService.GetUri(requestRoute,
                                    new PaginationQuery
            {
                PageNumber = pagination.PageNumber - 1,
                PageSize   = pagination.PageSize
            }).ToString()
                : null;

            return(new PagedResponse <T>
            {
                Data = response,
                PageNumber = pagination.PageNumber >= 1 ? pagination.PageNumber
                : (int?)null,
                PageSize = pagination.PageSize > response.Count ? response.Count
                : pagination.PageSize >= 1 ? pagination.PageSize
                : (int?)null,
                NextPage = total > pagination.PageSize ? nextPage
                : null,
                PreviousPage = previousPage,
                Total = total
            });
        }
 public static string AppendPaginationQuery(this string query, IPaginateable pagination)
 {
     return(pagination == null ? query : $"{query}?pageNumber={pagination.PageNumber}&pageSize={pagination.PageSize}");
 }
示例#7
0
 public static IQueryable <TEntity> ApplyPaging <TEntity>(this IQueryable <TEntity> efQuery,
                                                          IPaginateable pagination)
 => efQuery
 .Skip((pagination.PageNumber - 1) * pagination.PageSize)
 .Take(pagination.PageSize);