public PagedList <BookShelfDto> GetBookShelves(BookShelfQueryFilter filters) { filters.PageNumber = filters.PageNumber == 0 ? _paginationOptions.DefaultPageNumber : filters.PageNumber; filters.PageSize = filters.PageSize == 0 ? _paginationOptions.DefaultPageSize : filters.PageSize; var bookShelves = _unitOfWork.BookShelfRepository.GetBookShelvesAndLocationName(); if (filters.LocationId != null) { bookShelves = bookShelves.Where(x => x.LocationId == filters.LocationId); } if (filters.BookGroupId != null) { var books = _unitOfWork.BookRepository.GetBookByBookGroup(filters.BookGroupId); //var bookDrawers = _unitOfWork.BookDrawerRepository.GetBookDrawerByListBook(books); //var drawers = _unitOfWork.DrawerRepository.GetAllDrawers(bookDrawers); //bookShelves = _unitOfWork.BookShelfRepository.GetBookShelvesByDrawer(drawers); } if (filters.Name != null) { bookShelves = bookShelves.Where(x => x.Name.ToLower().Contains(filters.Name.ToLower())); } var pagedBookShelves = PagedList <BookShelfDto> .Create(bookShelves, filters.PageNumber, filters.PageSize); return(pagedBookShelves); }
public IActionResult GetBookShelves([FromQuery] BookShelfQueryFilter filters) { var bookShelves = _bookShelfService.GetBookShelves(filters); var bookShelvesDtos = _mapper.Map <IEnumerable <BookShelfDto> >(bookShelves); var metadata = new Metadata { TotalCount = bookShelves.TotalCount, PageSize = bookShelves.PageSize, CurrentPage = bookShelves.CurrentPage, TotalPages = bookShelves.TotalPages, HasNextPage = bookShelves.HasNextPage, HasPreviousPage = bookShelves.HasPreviousPage, NextPageUrl = bookShelves.NextPage, PreviousPageUrl = bookShelves.PreviousPage }; var response = new ApiResponse <IEnumerable <BookShelfDto> >(bookShelvesDtos) { Meta = metadata }; Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata)); return(Ok(response)); }
public Uri GetBookShelfPaginationUri(BookShelfQueryFilter filter, string actionUrl) { string baseUrl = $"{_baseUri}{actionUrl}"; return(new Uri(baseUrl)); }