public PagedList <Category> GetCategories(CategoryParametersDto categoryParameters) { if (categoryParameters == null) { throw new ArgumentNullException(nameof(categoryParameters)); } var collection = _context.Categories as IQueryable <Category>; if (!string.IsNullOrWhiteSpace(categoryParameters.CategoryName)) { var categoryName = categoryParameters.CategoryName.Trim(); collection = collection.Where(c => c.CategoryName == categoryName); } var sieveModel = new SieveModel { Sorts = categoryParameters.SortOrder }; collection = _sieveProcessor.Apply(sieveModel, collection); return(PagedList <Category> .Create(collection, categoryParameters.PageNumber, categoryParameters.PageSize)); }
public ActionResult <IEnumerable <CategoryDto> > GetCategories([FromQuery] CategoryParametersDto categoryParametersDto) { var categoriesFromRepo = _categoryRepository.GetCategories(categoryParametersDto); var paginationMetadata = new { totalCount = categoriesFromRepo.TotalCount, pageSize = categoriesFromRepo.PageSize, currentPage = categoriesFromRepo.CurrentPage, totalPages = categoriesFromRepo.TotalPages, previousPageLink = categoriesFromRepo.HasPrevious, nextPageLink = categoriesFromRepo.HasNext }; Response.Headers.Add("X-Pagination", JsonSerializer.Serialize(paginationMetadata)); var categoriesDto = _mapper.Map <IEnumerable <CategoryDto> >(categoriesFromRepo); return(Ok(categoriesDto)); }