示例#1
0
        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);
        }