public async Task <IActionResult> GetBookAsync(Pagination pagination, FillterBook fillterBook) { //Mapper var booksSoruce = await _context.Books.Include(b => b.Category).ToListAsync(); var books = _mapper.Map <IEnumerable <Book>, IEnumerable <BookDTO> >(booksSoruce); //Fill by UserId if (fillterBook.UserId != "") { books = books.Where(b => b.UserId == fillterBook.UserId).ToList(); } //Fill by Category if (fillterBook.CategoryId != -1) { books = books.Where(b => b.Category.CategoryId == fillterBook.CategoryId).ToList(); } //Fill by name if (fillterBook.Name != "") { books = books.Where(b => b.Name.ToLower().Contains(fillterBook.Name.ToLower())).ToList(); } //Fill by price if (fillterBook.PriceFrom != -1 || fillterBook.PriceTo != int.MaxValue) { books = books.Where(b => b.Price >= fillterBook.PriceFrom && b.Price <= fillterBook.PriceTo).ToList(); } //Sort asc if (fillterBook.sortAsc != "") { try { books = books.OrderBy(b => b.GetType().GetProperty(fillterBook.sortAsc).GetValue(b)).ToList(); } catch (NullReferenceException) { return(BadRequest(new { success = false, message = fillterBook.sortAsc + " Không hợp lệ " })); } } //Sort desc if (fillterBook.sortDesc != "") { try { books = books.OrderByDescending(b => b.GetType().GetProperty(fillterBook.sortDesc).GetValue(b)).ToList(); } catch (NullReferenceException) { return(BadRequest(new { success = false, message = fillterBook.sortDesc + " Không hợp lệ " })); } } return(Ok(PaginatedList <BookDTO> .Create(books, pagination.current, pagination.pageSize))); }
public async Task <IActionResult> GetAll([FromQuery] Pagination pagination, [FromQuery] FillterBook fillterBook) { var result = await _bookService.GetBookAsync(pagination, fillterBook); return(result); }