public async Task <SearchBookResultViewModel> ExecuteAsync(string view, int page, int pageSize) { if (string.IsNullOrEmpty(view) || page < 0) { return(new SearchBookResultViewModel()); } IQueryable <BookViewModel> listBooks; if (view == "Sách mới") { listBooks = from book in _bookRepository.TableNoTracking.Where(x => x.Enabled.Value) join cag in _categoryRepository.TableNoTracking on book.CategoryId equals cag.Id orderby book.DateImport descending, book.PublicationDate descending select new BookViewModel { BookId = book.Id, BookCode = book.BookCode, BookName = book.BookName }; } else { listBooks = from book in _bookRepository.TableNoTracking.Where(x => x.Enabled.Value) join cag in _categoryRepository.TableNoTracking on book.CategoryId equals cag.Id where cag.CategoryName == view orderby book.DateImport descending, book.PublicationDate descending select new BookViewModel { BookId = book.Id, BookCode = book.BookCode, BookName = book.BookName }; } var result = page == 0 && pageSize == 1 ? await listBooks.ToListAsync() : await listBooks.Skip((page - 1) *pageSize).Take(pageSize).ToListAsync(); SearchBookResultViewModel model = new SearchBookResultViewModel(); model.Total = await listBooks.CountAsync(); model.ListBooks = result; return(model); }
public async Task <SearchBookResultViewModel> ExecuteAsync(string search, int page, int pageSize) { if (string.IsNullOrEmpty(search) || page < 0) { return(new SearchBookResultViewModel()); } search = search.Trim().ToLowerInvariant(); var listBooks = from book in _bookRepository.TableNoTracking.Where(x => x.Enabled.Value) join category in _categoryRepository.TableNoTracking on book.CategoryId equals category.Id join publisher in _publisherRepository.TableNoTracking on book.PublisherId equals publisher.Id into publishers from publisher in publishers.DefaultIfEmpty() join supplier in _supplierRepository.TableNoTracking on book.SupplierId equals supplier.Id into suppliers from supplier in suppliers.DefaultIfEmpty() join lib in _libraryRepository.TableNoTracking on book.LibraryId equals lib.Id into libs from lib in libs.DefaultIfEmpty() where book.BookName.ToLower().Contains(search) || category.CategoryName.ToLower().Contains(search) || book.Author.ToLower().Contains(search) || (publisher != null && publisher.Name.ToLower().Contains(search)) || (supplier != null && supplier.Name.ToLower().Contains(search)) || (lib != null && lib.Name.ToLower().Contains(search)) orderby book.DateImport descending, book.PublicationDate descending select new BookViewModel { BookId = book.Id, BookCode = book.BookCode, BookName = book.BookName }; var result = page == 0 && pageSize == 1 ? await listBooks.ToListAsync() : await listBooks.Skip((page - 1) *pageSize).Take(pageSize).ToListAsync(); SearchBookResultViewModel model = new SearchBookResultViewModel(); model.Total = await listBooks.CountAsync(); model.ListBooks = result; return(model); }