示例#1
0
        public PagedList <BookDto> GetBooks(BookQueryFilter filters)
        {
            filters.PageNumber = filters.PageNumber == 0 ? _paginationOptions.DefaultPageNumber : filters.PageNumber;
            filters.PageSize   = filters.PageSize == 0 ? _paginationOptions.DefaultPageSize : filters.PageSize;
            var books = _unitOfWork.BookRepository.GetAllBooks();



            if (filters.IsInDrawer == true)
            {
                books = _unitOfWork.BookRepository.GetAllBooksInDrawer();
            }

            if (filters.Barcode != null)
            {
                books = _unitOfWork.BookRepository.GetBookByListId(filters.Barcode);
                foreach (var book in books)
                {
                    var returnDetail = _unitOfWork.ReturnDetailRepository.GetCustomerByBookId(book.Id);
                    if (returnDetail == null)
                    {
                        book.IsAvailable = true;
                    }
                    else
                    {
                        var customer = _unitOfWork.CustomerRepository.GetById(returnDetail.CustomerId);
                        book.CustomerId    = customer.Id;
                        book.CustomerName  = customer.Name;
                        book.CustomerImage = customer.Image;
                    }
                }
            }

            if (filters.IsInDrawer == false)
            {
                books = _unitOfWork.BookRepository.GetAllBooksNotInDrawer();
            }

            if (filters.BookGroupId != null)
            {
                books = books.Where(x => x.BookGroupId == filters.BookGroupId);
            }

            if (filters.BookName != null)
            {
                books = books.Where(x => x.BookName.ToLower().Contains(filters.BookName.ToLower()));
            }

            if (filters.DrawerId != null)
            {
                books = _unitOfWork.BookRepository.GetBookByDrawer(filters.DrawerId);
            }
            var pagedBooks = PagedList <BookDto> .Create(books, filters.PageNumber, filters.PageSize);

            return(pagedBooks);
        }
示例#2
0
        public IActionResult GetBooks([FromQuery] BookQueryFilter filters)
        {
            var request = _httpContextAccessor.HttpContext.Request;
            var books   = _bookService.GetBooks(filters);
            //string str = request.QueryString.ToString();
            //string stringBeforeChar = str.Substring(0, str.IndexOf("&"));
            var booksDtos = _mapper.Map <IEnumerable <BookDto> >(books);
            //if (stringBeforeChar.Length < 0)
            //{
            //    var nextPage = books.CurrentPage >= 1 && books.CurrentPage < books.TotalCount
            //               ? _uriService.GetPageUri(books.CurrentPage + 1, books.PageSize, _uriService.GetBookPaginationUri(filters, Url.RouteUrl(nameof(GetBooks))).ToString())
            //               : null;
            //    var previousPage = books.CurrentPage - 1 >= 1 && books.CurrentPage < books.TotalCount
            //                   ? _uriService.GetPageUri(books.CurrentPage - 1, books.PageSize, _uriService.GetBookPaginationUri(filters, Url.RouteUrl(nameof(GetBooks))).ToString())
            //                   : null;
            //}
            //else
            //{
            //    var nextPage = books.CurrentPage >= 1 && books.CurrentPage < books.TotalCount
            //               ? _uriService.GetPageUri(books.CurrentPage + 1, books.PageSize, _uriService.GetBookPaginationUri(filters, Url.RouteUrl(nameof(GetBooks))).ToString() + stringBeforeChar)
            //               : null;
            //    var previousPage = books.CurrentPage - 1 >= 1 && books.CurrentPage < books.TotalCount
            //                   ? _uriService.GetPageUri(books.CurrentPage - 1, books.PageSize, _uriService.GetBookPaginationUri(filters, Url.RouteUrl(nameof(GetBooks))).ToString() + stringBeforeChar)
            //                   : null;
            //}

            var metadata = new Metadata
            {
                TotalCount      = books.TotalCount,
                PageSize        = books.PageSize,
                CurrentPage     = books.CurrentPage,
                TotalPages      = books.TotalPages,
                HasNextPage     = books.HasNextPage,
                HasPreviousPage = books.HasPreviousPage
            };

            var response = new ApiResponse <IEnumerable <BookDto> >(booksDtos)
            {
                Meta = metadata
            };

            Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata));

            return(Ok(response));
        }
示例#3
0
        public Uri GetBookPaginationUri(BookQueryFilter filter, string actionUrl)
        {
            string baseUrl = $"{_baseUri}{actionUrl}";

            return(new Uri(baseUrl));
        }