public IActionResult GetBookGroups([FromQuery] BookGroupQueryFilter filters) { //var request = _httpContextAccessor.HttpContext.Request; //string str = request.QueryString.ToString(); //string stringBeforeChar = str.Substring(0, str.IndexOf("&")); var bookGroups = _bookGroupService.GetBookGroups(filters); var bookGroupsDto = _mapper.Map <IEnumerable <BookGroupDto> >(bookGroups); //var nextPage = bookGroups.CurrentPage >= 1 && bookGroups.CurrentPage < bookGroups.TotalCount // ? _uriService.GetPageUri(bookGroups.CurrentPage + 1, bookGroups.PageSize, _uriService.GetBookGroupPaginationUri(filters, Url.RouteUrl(nameof(GetBookGroups))).ToString() + stringBeforeChar) // : null; //var previousPage = bookGroups.CurrentPage - 1 >= 1 && bookGroups.CurrentPage < bookGroups.TotalCount // ? _uriService.GetPageUri(bookGroups.CurrentPage - 1, bookGroups.PageSize, _uriService.GetBookGroupPaginationUri(filters, Url.RouteUrl(nameof(GetBookGroups))).ToString() + stringBeforeChar) // : null; var metadata = new Metadata { TotalCount = bookGroups.TotalCount, PageSize = bookGroups.PageSize, CurrentPage = bookGroups.CurrentPage, TotalPages = bookGroups.TotalPages, HasNextPage = bookGroups.HasNextPage, HasPreviousPage = bookGroups.HasPreviousPage, }; var response = new ApiResponse <IEnumerable <BookGroupDto> >(bookGroupsDto) { Meta = metadata }; Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata)); return(Ok(response)); }
public PagedList <BookGroupDto> GetBookGroups(BookGroupQueryFilter filters) { filters.PageNumber = filters.PageNumber == 0 ? _paginationOptions.DefaultPageNumber : filters.PageNumber; filters.PageSize = filters.PageSize == 0 ? _paginationOptions.DefaultPageSize : filters.PageSize; var bookGroupDtos = _unitOfWork.BookGroupRepository.GetAllBookGroups(); var categories = _unitOfWork.CategoryRepository.GetAllCategories(); var bookCategories = _unitOfWork.BookCategoryRepository.GetAllBookCategoriesByBookGroup(); var bookGroups = _unitOfWork.BookGroupRepository.GetAllBookGroupsWithCategory(bookGroupDtos, bookCategories, categories); if (filters.Name != null) { bookGroups = bookGroups.Where(x => x.Name.ToLower().Contains(filters.Name.ToLower())); } if (filters.CustomerId != null) { var favourite = _unitOfWork.FavouriteCategoryRepository.GetFavouriteCategoryForSuggest(filters.CustomerId); var categoryByCategory = _unitOfWork.BookCategoryRepository.GetBookCategoriesByCategory(favourite.CategoryId); bookGroups = _unitOfWork.BookGroupRepository.GetBookGroupsByBookCategory(categoryByCategory); } if (filters.Author != null) { bookGroups = bookGroups.Where(x => x.Author.ToLower().Contains(filters.Author.ToLower())); } if (filters.IsNewest == true) { bookGroups = bookGroups.OrderByDescending(x => x.Id).ToList(); } if (filters.IsPopular == true) { bookGroups = bookGroups.OrderBy(x => x.Id).ToList(); } if (filters.Fee != null) { bookGroups = bookGroups.Where(x => x.Fee == filters.Fee); } if (filters.CategoryId != null) { var categoryByCategory = _unitOfWork.BookCategoryRepository.GetBookCategoriesByCategory(filters.CategoryId); bookGroups = _unitOfWork.BookGroupRepository.GetBookGroupsByBookCategory(categoryByCategory); } if (filters.PunishFee != null) { bookGroups = bookGroups.Where(x => x.PunishFee == filters.PunishFee); } var pagedBookGroups = PagedList <BookGroupDto> .Create(bookGroups, filters.PageNumber, filters.PageSize); return(pagedBookGroups); }
public Uri GetBookGroupPaginationUri(BookGroupQueryFilter filter, string actionUrl) { string baseUrl = $"{_baseUri}{actionUrl}"; return(new Uri(baseUrl)); }