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