public async Task <ActionResult> ListBooks(string searchString = "", int page = 1) { Session["LastListAction"] = "ListBooks"; Session["Controller"] = "Home"; Session["Search"] = searchString; Session["Page"] = page.ToString(); BooksListViewModel model = new BooksListViewModel { Books = repository.Books .OrderBy(b => b.BookId), PagingInfo = new PagingInfo { CurrentPage = page, ItemsPerPage = pageSize, TotalItems = repository.Books.Count() } }; if (!String.IsNullOrEmpty(searchString)) { model.Books = model.Books.Where(x => (x.Name.ToLower() + x.Authors.ToLower()).Contains(searchString.ToLower())); model.PagingInfo.TotalItems = model.Books.Count(); } model.Books = model.Books.Skip((page - 1) * pageSize).Take(pageSize); return(View(model)); }
public ViewResult List(string category) { var _category = category; IEnumerable <Book> books = null; var currCategory = ""; if (string.IsNullOrEmpty(category)) { books = _allBooks.Books.OrderBy(i => i.Id); } else { if (string.Equals("paper", category, StringComparison.OrdinalIgnoreCase)) { books = _allBooks.Books.Where(i => i.Category.Name.Equals("Бумажные книги")).OrderBy(i => i.Id); currCategory = "Бумажные книги"; } else if (string.Equals("electro", category, StringComparison.OrdinalIgnoreCase)) { books = _allBooks.Books.Where(i => i.Category.Name.Equals("Электронные книги")).OrderBy(i => i.Id); currCategory = "Электронные книги"; } } var bookObj = new BooksListViewModel { AllBooks = books, CurrCategory = currCategory }; ViewBag.Title = "Страница с книгами"; return(View(bookObj)); }
public ViewResult List(string category, int page = 1) { var books = repository.Books .Where(p => category == null || p.Category == category) .OrderBy(book => book.BookId) .Skip((page - 1) * pageSize) .Take(pageSize); var booksCount = category == null? repository.Books.Count() : repository.Books.Count(book => book.Category == category); var pageInfo = new PagingInfo { CurrentPage = page, ItemsPerPage = pageSize, TotalItems = booksCount }; var model = new BooksListViewModel { Books = books, PagingInfo = pageInfo, CurrentCategory = category }; return(View(model)); }
public ViewResult List(Category category, int page = 1) { ViewBag.SelectedCategory = category; bool ShowAllBooks = category == null; int CategoryID = category != null ? category.CategoryID : 1; BooksListViewModel model = new BooksListViewModel { Books = repository.Books .Where(p => ShowAllBooks || p.Category.CategoryID == CategoryID) .OrderBy(p => p.BookID) .Skip((page - 1) * PageSize) .Take(PageSize), PagingInfo = new PagingInfo { CurrentPage = page, ItemsPerPage = PageSize, TotalItems = (category == null || category.CategoryID == -1)? repository.Books.Count() : category.Books.Count() }, CurrentCategory = category }; return(View(model)); }
public async Task <IActionResult> GetBooks(int limit, int offset) { if (limit < 1 || offset < 0) { return(StatusCode(400, "Invalid data format.")); } try { var books = await _bookService.GetBooksRangeAsync(limit + 1, offset); var booksListViewModel = new BooksListViewModel(); booksListViewModel.Books = books.Take(limit); if (books.Count() > limit) { booksListViewModel.HasMore = true; } else { booksListViewModel.HasMore = false; } return(new ObjectResult(booksListViewModel)); } catch (Exception e) { return(StatusCode(500, "Server error. Try to reload page.")); } }
public IActionResult GetBooksAPI(string search, int page = 1, int catId = -1, int authorId = -1, int rate = -1) { search = search == null ? "" : search.ToLower(); var rawBooks = _db.Books.Where(b => b.Title.ToLower().Contains(search)) .Where(b => b.Categories.Any(c => c.CategoryId == (catId == -1 ? c.CategoryId : catId))) .Where(b => b.Authors.Any(a => a.AuthorId == (authorId == -1 ? a.AuthorId : authorId))); if (rate != -1) { rawBooks = rawBooks.Where(b => b.Rating.Sum(r => r.RatingValue) / b.Rating.Count == rate); } var model = new BooksListViewModel { Books = rawBooks.OrderByDescending(b => b.Id).Skip((page - 1) * 12).Take(12), Total = rawBooks.Count(), PageCount = (int)Math.Ceiling((decimal)rawBooks.Count() / 12), CurrentPage = page, Search = search, CategoryId = catId, AuthorId = authorId, Rate = rate }; return(PartialView("_BooksListPartial", model)); }
public ActionResult List(int categoryId = 0, int page = 1, string search = "") { IQueryable <Book> booksList; if (search != "") { booksList = reopository.Books.Where(b => b.AUthors.Contains(search) || b.Name.Contains(search) || b.Description.Contains(search)); } else { booksList = reopository.Books; } if (categoryId > 0) { booksList = booksList.Where(b => b.CategoryId == categoryId); } BooksListViewModel viewModel = new BooksListViewModel { Books = booksList .OrderBy(p => p.Id) .Skip((page - 1) * PageSize) .Take(PageSize), pagingInfo = new PagingInfo { CurrentPage = page, ItemsPerPage = PageSize, TotalItems = booksList.Count() }, CurrentCategoryId = categoryId, }; return(View(viewModel)); }
public void CanSendPaginationViewModel() { Mock <IBookRepository> mock = new Mock <IBookRepository>(); mock.Setup(m => m.Books).Returns(new List <Book> { new Book { BookId = 1, Name = "Book1" }, new Book { BookId = 2, Name = "Book2" }, new Book { BookId = 3, Name = "Book3" }, new Book { BookId = 4, Name = "Book4" }, new Book { BookId = 5, Name = "Book5" } }); BooksController controller = new BooksController(mock.Object); controller.pageSize = 3; BooksListViewModel result = (BooksListViewModel)controller.List(null, 2).Model; PagingInfo pagingInfo = result.PagingInfo; Assert.AreEqual(pagingInfo.CurrentPage, 2); Assert.AreEqual(pagingInfo.ItemsPerPage, 3); Assert.AreEqual(pagingInfo.TotalItems, 5); Assert.AreEqual(pagingInfo.TotalPages, 2); }
public void Can_Paginate() { // Arrange Mock <IBookRepository> mock = new Mock <IBookRepository>(); mock.Setup(m => m.Books).Returns((new Book[] { new Book { BookId = Guid.NewGuid(), Title = "B1", Author = "GG", ISBN = "21542", Price = 100 }, new Book { BookId = Guid.NewGuid(), Title = "B2", Author = "GG", ISBN = "43543", Price = 200 }, new Book { BookId = Guid.NewGuid(), Title = "B3", Author = "GG", ISBN = "65432", Price = 300 }, new Book { BookId = Guid.NewGuid(), Title = "B4", Author = "GG", ISBN = "76532", Price = 400 }, new Book { BookId = Guid.NewGuid(), Title = "B5", Author = "GG", ISBN = "76533", Price = 500 }, }).AsQueryable <Book>()); BookController controller = new BookController(mock.Object); controller.PageSize = 3; // Act BooksListViewModel result = controller.List(null, 2).ViewData.Model as BooksListViewModel; // Assert Book[] bookArray = result.Books.ToArray(); Assert.True(bookArray.Length == 2); Assert.Equal("B4", bookArray[0].Title); Assert.Equal("B5", bookArray[1].Title); }
public void Can_Paginate() { //Model Mock <IBookRepository> mock = new Mock <IBookRepository>(); mock.Setup(m => m.Books).Returns(new Book[] { new Book { BookId = 1, Author = "1", Name = "BMW1", Price = 50 }, new Book { BookId = 2, Author = "2", Name = "BMW2", Price = 60 }, new Book { BookId = 3, Author = "3", Name = "BMW3", Price = 70 }, new Book { BookId = 4, Author = "4", Name = "BMW4", Price = 80 }, new Book { BookId = 5, Author = "5", Name = "BMW5", Price = 590 }, }); BookController bookController = new BookController(mock.Object); bookController.PageSize = 3; //Act BooksListViewModel result = bookController.List(null, 2).ViewData.Model as BooksListViewModel; Book[] books = result.Books.ToArray(); //Cheking conditions Assert.True(books.Length == 2); Assert.Equal("BMW4", books[0].Name); Assert.Equal("BMW5", books[1].Name); }
public void Can_Paginate() { // Организация (arrange) Mock <IBookRepository> mock = new Mock <IBookRepository>(); mock.Setup(m => m.Books).Returns(new List <Book> { new Book { BookId = 1, Name = "Книга1" }, new Book { BookId = 2, Name = "Книга2" }, new Book { BookId = 3, Name = "Книга3" }, new Book { BookId = 4, Name = "Книга4" }, new Book { BookId = 5, Name = "Книга5" } }); //создание иммитированного хранилища BookController controller = new BookController(mock.Object); controller.pageSize = 3; // сколько товаров на странице может отображаться // Действие (act) BooksListViewModel result = (BooksListViewModel)controller.List(null, 2).Model; //создаём модель и переходим на 2-ю страницу // Утверждение List <Book> books = result.Books.ToList(); //конвертируем в список Assert.IsTrue(books.Count == 2); //всего книг на 2 странице 2: Assert.AreEqual(books[0].Name, "Книга4"); //4-я Assert.AreEqual(books[1].Name, "Книга5"); //и 5-я }
public void Can_Send_View_Model() { //Arrange Mock <IBooksRepository> mock = new Mock <IBooksRepository>(); mock.Setup(m => m.Books).Returns(new Book[] { new Book { ISBN = 1, Title = "b1" }, new Book { ISBN = 2, Title = "b2" }, new Book { ISBN = 3, Title = "b3" }, new Book { ISBN = 4, Title = "b4" }, new Book { ISBN = 5, Title = "b5" }, new Book { ISBN = 6, Title = "b6" }, }); BookController controller = new BookController(mock.Object); //Act BooksListViewModel result = (BooksListViewModel)controller.List(null, 2).Model; int ItemPerPage = result.Books.Count(); int currentPage = result.pagingInfo.CurrentPage; //Assert Assert.AreEqual(2, ItemPerPage); Assert.AreEqual(2, currentPage); }
public void Can_Use_Repository() { // Arrange Mock <IRepositoryRepository> mock = new Mock <IRepositoryRepository>(); mock.Setup(m => m.Books).Returns((new Book[] { new Book { BookID = 1, Title = "B1" }, new Book { BookID = 2, Title = "B2" } }).AsQueryable <Book>()); HomeController controller = new HomeController(mock.Object); // Act BooksListViewModel result = controller.Index(null).ViewData.Model as BooksListViewModel; // Assert Book[] bookArray = result.Books.ToArray(); Assert.True(bookArray.Length == 2); Assert.Equal("B1", bookArray[0].Title); Assert.Equal("B2", bookArray[1].Title); }
public ActionResult BooksPartial(string category) { IEnumerable <Book> books = null; if (string.IsNullOrEmpty(category)) { books = allBook.AllBooks.OrderBy(i => i.BookID); } else { if (string.Equals("Художественная литература", category, StringComparison.OrdinalIgnoreCase)) { books = allBook.AllBooks.Where(i => i.Category.CategoryName.Equals("Художественная литература")).OrderBy(i => i.CategoryID); } else if (string.Equals("Техническая литература", category, StringComparison.OrdinalIgnoreCase)) { books = allBook.AllBooks.Where(i => i.Category.CategoryName.Equals("Техническая литература")).OrderBy(i => i.CategoryID); } else if (string.Equals("История", category, StringComparison.OrdinalIgnoreCase)) { books = allBook.AllBooks.Where(i => i.Category.CategoryName.Equals("История")).OrderBy(i => i.CategoryID); } else if (string.Equals("Фантастика", category, StringComparison.OrdinalIgnoreCase)) { books = allBook.AllBooks.Where(i => i.Category.CategoryName.Equals("Фантастика")).OrderBy(i => i.CategoryID); } } var bookObj = new BooksListViewModel { AllBooks = books }; return(PartialView(bookObj)); }
public ViewResult List(string genre, int page = 1) { BooksListViewModel model = new BooksListViewModel { Books = repository.Books .Where(b => genre == null || b.Genre.TrimEnd(' ') == genre.TrimEnd(' ')) .OrderBy(book => book.Id) .Skip((page - 1) * pageSize) .Take(pageSize), PagingInfo = new PagingInfo { CurrentPage = page, ItemsPerPage = pageSize, TotalItems = genre == null? repository.Books.Count() : repository.Books.Where(b => b.Genre.TrimEnd(' ') == genre.TrimEnd(' ')).Count() }, CurrentGenre = genre, }; foreach (var book in model.Books) { var q = book; } ; return(View(model)); }
public void Can_Paginate() { Mock <IBookRepository> repository = new Mock <IBookRepository>(); repository.Setup(m => m.Books).Returns(new List <Book> { new Book { BookId = 1, Name = "Book1" }, new Book { BookId = 2, Name = "Book2" }, new Book { BookId = 3, Name = "Book3" }, new Book { BookId = 4, Name = "Book4" }, new Book { BookId = 5, Name = "Book5" } }); BooksController controller = new BooksController(repository.Object); controller.pageSize = 3; BooksListViewModel result = (BooksListViewModel)controller.List(null, 2).Model; List <Book> books = result.Books.ToList(); Assert.IsTrue(books.Count == 2); Assert.AreEqual(books[0].Name, "Book4"); Assert.AreEqual(books[1].Name, "Book5"); }
public ActionResult Index(int?bookId, string person) { IQueryable <Purchase> purchases = db.Purchases; if (bookId != null && bookId != 0) { purchases = purchases.Where(p => p.BookId == bookId); } if (!String.IsNullOrEmpty(person) && !person.Equals("Все")) { purchases = purchases.Where(p => p.Person == person); } List <int> bookIds = db.Purchases.Select(p => p.BookId).Distinct().ToList(); bookIds.Insert(0, 0); List <string> persons = db.Purchases.Select(p => p.Person).Distinct().ToList(); persons.Insert(0, "Все"); BooksListViewModel blvm = new BooksListViewModel { Purchases = purchases.ToList(), BookIds = new SelectList(bookIds), Persons = new SelectList(persons) }; return(View(blvm)); }
public void Can_Paginate() { //arrange Mock <IBooksRepository> mock = new Mock <IBooksRepository>(); mock.Setup(m => m.Books).Returns(new List <Book> { new Book { ISBN = 1, Title = "Book1" }, new Book { ISBN = 2, Title = "Book2" }, new Book { ISBN = 3, Title = "Book3" }, new Book { ISBN = 4, Title = "Book4" }, new Book { ISBN = 5, Title = "Book5" } }); BookController Controller = new BookController(mock.Object); Controller.PageSize = 3; //Act BooksListViewModel result = (BooksListViewModel)Controller.List(null, 2).Model; Book[] BooksArray = result.Books.ToArray(); //Assert Assert.IsTrue(BooksArray.Length == 2); Assert.AreEqual(BooksArray[0].Title, "Book4"); Assert.AreEqual(BooksArray[1].Title, "Book5"); }
public IActionResult List() { BooksListViewModel booksListViewModel = new BooksListViewModel(); booksListViewModel.Books = _bookRepository.GetAllBooks(); booksListViewModel.HeaderOfThePage = "Library"; return(View(booksListViewModel)); }
public Books(BooksListViewModel vm) { BookList = new List <BooksDTO>(); _bookCollection = (CollectionViewSource)(Resources["BookCollection"]); _bookListViewModel = vm; DataContext = vm; InitializeComponent(); }
public ViewResult List() { BooksListViewModel obj = new BooksListViewModel(); obj.AllBooks = _AllBook.Books; obj.CurrCategory = "Книги"; return(View(obj)); }
public ViewResult List() { BooksListViewModel booksListViewModel = new BooksListViewModel(); // booksListViewModel.Books = _bookRepository.AllBooks; booksListViewModel.Books = _unitOfWork.Books.AllBooks; booksListViewModel.CategoryTitle = "All books"; return(View(booksListViewModel)); }
public BooksListViewModel GetBooks() { IQueryable <Book> books = bookRepository.GetItems(); var booksModel = new BooksListViewModel { Books = books }; return(booksModel); }
public ActionResult BookListFilter(Cart cart, MenuFilterViewModel model, int page = 1) { if (!ModelState.IsValid) { return(RedirectToAction("BookList")); } IEnumerable <Book> books = repository.Books .Where(x => (string.IsNullOrEmpty(model.Genre) || x.Genre.GenreName.Equals(model.Genre)) && x.Price >= model.MinPrice && x.Price <= model.MaxPrice); switch (model.SortItem) { case "Default": { books = books.OrderBy(x => x.BookId); break; } case "Name_ASC": { books = books.OrderBy(x => x.Name); break; } case "Name_DESC": { books = books.OrderByDescending(x => x.Name); break; } case "Price_ASC": { books = books.OrderBy(x => x.Price); break; } case "Price_DESC": { books = books.OrderByDescending(x => x.Price); break; } } ; BooksListViewModel bookList = new BooksListViewModel { Books = books, BooksInCart = cart.TotalCart.Select(x => x.Book.BookId), Pagination = new Pagination { ItemsPerPage = 1 } }; return(View("BookList", bookList)); }
public ActionResult Index() { BooksListViewModel model = new BooksListViewModel { // Books = _repository.Books }; return(View(model)); }
// GET: /<controller>/ public IActionResult List() { //return View(_bookRepository.AllBooks); BooksListViewModel booksListViewModel = new BooksListViewModel(); booksListViewModel.Books = _bookRepository.AllBooks; booksListViewModel.CurrentGenre = "Horror"; return(View(booksListViewModel)); }
// GET /Book/BooksList // Get the page with the list of books public IActionResult BooksList() { // Get all books from the database and put it in the view model BooksListViewModel booksListViewModel = new BooksListViewModel(); booksListViewModel.AllBooks = _bookRepository.GetAllBooks; // Return view with data return(View(booksListViewModel)); }
public ViewResult List() { BooksListViewModel booksListViewModel = new BooksListViewModel(); booksListViewModel.Books = _bookRepository.AllBooks; // booksListViewModel.CurrentCategory = "Science fiction"; return(View(booksListViewModel)); }
public ViewResult List() { ViewBag.Title = "page with books"; BooksListViewModel obj = new BooksListViewModel(); obj.allBooks = _allBooks.Books; obj.currCategory = "Книги"; return(View()); }
public ViewResult List(string category = null, int page = 1) { BooksListViewModel model = new BooksListViewModel { Books = bookRepository.Books .Where(b => category == null || b.Category == category) .OrderBy(b => b.Title), CurrentCategory = category }; return(View(model)); }