Пример #1
0
 private string GetPageLink(IAuthorParameters parameters, int pageNumber)
 {
     return(Url.Link(
                "GetAuthors",
                new
     {
         pageNumber,
         fields = parameters.Fields,
         pageSize = parameters.PageSize,
         mainCategory = parameters.MainCategory,
         searchQuery = parameters.SearchQuery
     }));
 }
Пример #2
0
        private string GetPaginationData(PagedList <AuthorDto> pagedList, IAuthorParameters parameters, int totalCount)
        {
            var totalPages = Math.Ceiling(totalCount / (double)parameters.PageSize);

            var previousPageLink =
                parameters.PageNumber == 1 ? null : GetPageLink(parameters, parameters.PageNumber - 1);

            var nextPageLink = totalPages > parameters.PageNumber
                ? GetPageLink(parameters, parameters.PageNumber + 1)
                : null;

            var paginationMetadata = new
            {
                pageSize   = pagedList.PageSize,
                pageNumber = pagedList.CurrentPage,
                totalPages,
                totalCount,
                previousPageLink,
                nextPageLink
            };

            return(JsonConvert.SerializeObject(paginationMetadata));
        }
Пример #3
0
        public IEnumerable <Author> GetAuthors(IAuthorParameters authorParameters, out int totalCount)
        {
            if (authorParameters == null)
            {
                throw new ArgumentNullException(
                          nameof(authorParameters),
                          "Filtering parameters should be passed to avoid data overload.");
            }

            if (authorParameters.PageNumber < 1 || authorParameters.PageSize < 1)
            {
                throw new ArgumentException("Invalid page information passed");
            }

            var authors = _context.Authors.AsQueryable();

            if (!string.IsNullOrWhiteSpace(authorParameters.MainCategory))
            {
                var mainCategory = authorParameters.MainCategory.Trim();
                authors = authors.Where(author => author.MainCategory.Equals(mainCategory));
            }

            if (!string.IsNullOrWhiteSpace(authorParameters.SearchQuery))
            {
                var searchQuery = authorParameters.SearchQuery.Trim();
                authors = authors.Where(
                    author => author.FirstName.Contains(searchQuery) ||
                    author.LastName.Contains(searchQuery) ||
                    author.MainCategory.Contains(searchQuery));
            }

            totalCount = authors.Count();
            var skipCount = (authorParameters.PageNumber - 1) * authorParameters.PageSize;

            authors = authors.Skip(skipCount).Take(authorParameters.PageSize);
            return(authors.ToList());
        }