Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 5
0
        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."));
            }
        }
Exemplo n.º 6
0
        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));
        }
Exemplo n.º 7
0
        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));
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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-я
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 14
0
        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));
        }
Exemplo n.º 15
0
        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));
        }
Exemplo n.º 16
0
        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");
        }
Exemplo n.º 17
0
        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));
        }
Exemplo n.º 18
0
        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");
        }
Exemplo n.º 19
0
        public IActionResult List()
        {
            BooksListViewModel booksListViewModel = new BooksListViewModel();

            booksListViewModel.Books           = _bookRepository.GetAllBooks();
            booksListViewModel.HeaderOfThePage = "Library";
            return(View(booksListViewModel));
        }
Exemplo n.º 20
0
 public Books(BooksListViewModel vm)
 {
     BookList           = new List <BooksDTO>();
     _bookCollection    = (CollectionViewSource)(Resources["BookCollection"]);
     _bookListViewModel = vm;
     DataContext        = vm;
     InitializeComponent();
 }
Exemplo n.º 21
0
        public ViewResult List()
        {
            BooksListViewModel obj = new BooksListViewModel();

            obj.AllBooks     = _AllBook.Books;
            obj.CurrCategory = "Книги";
            return(View(obj));
        }
Exemplo n.º 22
0
        public ViewResult List()
        {
            BooksListViewModel booksListViewModel = new BooksListViewModel();

            // booksListViewModel.Books = _bookRepository.AllBooks;
            booksListViewModel.Books         = _unitOfWork.Books.AllBooks;
            booksListViewModel.CategoryTitle = "All books";
            return(View(booksListViewModel));
        }
Exemplo n.º 23
0
        public BooksListViewModel GetBooks()
        {
            IQueryable <Book> books = bookRepository.GetItems();
            var booksModel          = new BooksListViewModel {
                Books = books
            };

            return(booksModel);
        }
Exemplo n.º 24
0
        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));
        }
Exemplo n.º 25
0
        public ActionResult Index()
        {
            BooksListViewModel model = new BooksListViewModel
            {
                // Books = _repository.Books
            };

            return(View(model));
        }
Exemplo n.º 26
0
        // GET: /<controller>/
        public IActionResult List()
        {
            //return View(_bookRepository.AllBooks);
            BooksListViewModel booksListViewModel = new BooksListViewModel();

            booksListViewModel.Books = _bookRepository.AllBooks;

            booksListViewModel.CurrentGenre = "Horror";
            return(View(booksListViewModel));
        }
Exemplo n.º 27
0
        // 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));
        }
Exemplo n.º 28
0
        public ViewResult List()
        {
            BooksListViewModel booksListViewModel = new BooksListViewModel();

            booksListViewModel.Books = _bookRepository.AllBooks;

            // booksListViewModel.CurrentCategory = "Science fiction";

            return(View(booksListViewModel));
        }
Exemplo n.º 29
0
        public ViewResult List()
        {
            ViewBag.Title = "page with books";
            BooksListViewModel obj = new BooksListViewModel();

            obj.allBooks     = _allBooks.Books;
            obj.currCategory = "Книги";

            return(View());
        }
Exemplo n.º 30
0
        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));
        }