private void BuildViewModel(Sitecore.Data.Items.Item contextItem)
 {
     _bpvm             = new BookPageViewModel();
     _bpvm.PrevBtnText = Translate.Text("Previous");
     _bpvm.NextBtnText = Translate.Text("Next");
     _bpvm.BookUrl     = Utilities.SitecoreHelper.FieldMethods.GetFileUrl(contextItem, "Book File");
 }
Exemple #2
0
        public async Task <BookPageViewModel> GetBooksAsync()
        {
            var result = new BookPageViewModel();
            var books  = await _dbContext.Books.Include(t => t.Pictures).ToListAsync();

            result.Books = books?.ToModel();
            return(result);
        }
        public async Task <IActionResult> BooksCollection(string search, SortState sortOrder = SortState.DateDesc, string view = "list", int page = 1)
        {
            ViewData["SearchParam"] = search;
            ViewData["ViewType"]    = view;
            int pageSize             = view == "list" ? 10 : 20;
            IQueryable <Book> source = !string.IsNullOrEmpty(search) ? source = _db.Books
                                                                                .Include(a => a.Author)
                                                                                .Include(a => a.Genre)
                                                                                .Include(a => a.Users)
                                                                                .Include(a => a.Comments)
                                                                                .Where(a => a.Name.Contains(search)) : _db.Books
                                                                                .Include(a => a.Author)
                                                                                .Include(a => a.Genre)
                                                                                .Include(a => a.Users)
                                                                                .Include(a => a.Comments);
            var count = await source.CountAsync();

            var books = await source.Skip((page - 1) *pageSize).Take(pageSize).ToListAsync();

            books = sortOrder switch
            {
                SortState.BookAsc => books.OrderBy(a => a.Name).ToList(),
                SortState.BookDesc => books.OrderByDescending(a => a.Name).ToList(),
                SortState.AuthorAsc => books.OrderBy(a => a.Author.FullName).ToList(),
                SortState.AuthorDesc => books.OrderByDescending(a => a.Author.FullName).ToList(),
                SortState.YearAsc => books.OrderBy(a => a.Year).ToList(),
                SortState.YearDesc => books.OrderByDescending(a => a.Year).ToList(),
                SortState.GenreAsc => books.OrderBy(a => a.Genre.Name).ToList(),
                SortState.GenreDesc => books.OrderByDescending(a => a.Genre.Name).ToList(),
                SortState.DateAsc => books.OrderBy(a => a.AdditionDate).ToList(),
                _ => books.OrderByDescending(a => a.AdditionDate).ToList()
            };

            PageViewModel     pageViewModel = new PageViewModel(count, page, pageSize);
            BookPageViewModel viewModel     = new BookPageViewModel
            {
                PageViewModel = pageViewModel,
                Book          = books,
                SortViewModel = new SortViewModel(sortOrder)
            };

            return(View(viewModel));
        }
        public async Task <IActionResult> List(int?id, int page = 1)
        {
            int pageSize             = 10;
            IQueryable <Book> source = _db.Books.Include(a => a.Author).Include(a => a.Users).Include(a => a.Comments).Where(g => g.GenreId == id).OrderByDescending(i => i.AdditionDate);
            var count = await source.CountAsync();

            var books = await source.Skip((page - 1) *pageSize).Take(pageSize).ToListAsync();

            string name = await _db.Genres.Where(i => i.Id == id).Select(i => i.Name).FirstOrDefaultAsync();

            ViewData["GenreName"] = name;

            PageViewModel     pageViewModel = new PageViewModel(count, page, pageSize);
            BookPageViewModel viewModel     = new BookPageViewModel
            {
                PageViewModel = pageViewModel,
                Book          = books
            };

            return(View(viewModel));
        }
 public BooksPage()
 {
     InitializeComponent();
     DataContext = new BookPageViewModel();
 }