Пример #1
0
        public void GetBooksFiltered()
        {
            var resourceParams = new BookResourceParameters {
                Genre = "fic_fantasy"
            };
            var res = _bookService.GetBooks(resourceParams);

            Assert.IsType <List <BookDto> >(res);
        }
Пример #2
0
        public async Task <PagedList <Book> > GetBooks(BookResourceParameters bookResourceParameters)
        {
            if (bookResourceParameters == null)
            {
                throw new ArgumentNullException(nameof(bookResourceParameters));
            }

            // Casting books into IQueryable to expand tree queries
            var books = _context.Books as IQueryable <Book>;

            // Getting new version of PagedList<Book>
            // After Pagination
            return(await PagedList <Book> .Create(books,
                                                  bookResourceParameters.PageNumber,
                                                  bookResourceParameters.PageSize));
        }
Пример #3
0
        public IEnumerable <Book> GetBooks(BookResourceParameters bookResourceParameters)
        {
            if (string.IsNullOrEmpty(bookResourceParameters.Genre))
            {
                return(GetBooks());
            }

            string sql        = @"select 
            b.au_id,
            b.book_id,
            b.type,
            b.price,
            b.title,
            b.pubdate
            from books b where b.type = @Genre";
            var    parameters = new DynamicParameters();

            parameters.Add("@Genre", bookResourceParameters.Genre, DbType.String, ParameterDirection.Input, bookResourceParameters.Genre.Length);
            var res = _repository.QueryDatabase <BookDbEntity>(sql, parameters);

            return(_mapper.Map <IEnumerable <Book> >(res));
        }
        // Book Resource Parameters are Query Params
        public async Task <IActionResult> GetBooks(
            [FromQuery] BookResourceParameters bookResourceParameters)
        {
            // Getting the books from the repository
            var books = await _bookRepository.GetBooks(bookResourceParameters);

            // Creating books pagination info object
            var paginationParamters = new
            {
                currentPage = books.CurrentPage,
                pageSize    = books.PageSize,
                totalItems  = books.TotalItems,
                totalPages  = books.TotalPages
            };

            // Adding X-Pagination Header to Header Responses
            Response.Headers.Add("X-Pagination", JsonSerializer.Serialize(paginationParamters));

            // Mapping Book to BookDto Implementing Outer Facing Contract
            var booksToReturn = _mapper.Map <IEnumerable <BookDto> >(books);

            // Returning Status Code 200
            return(Ok(booksToReturn));
        }
Пример #5
0
 public ActionResult <IEnumerable <BookDto> > GetBooks([FromQuery] BookResourceParameters bookResourceParameters)
 {
     return(Ok(_bookService.GetBooks(bookResourceParameters)));
 }