private async Task <AchievementListVM> GetElementsAsync(int?page, int?categoryId, string keyword) { var vm = new AchievementListVM() { CategoryId = categoryId, Keyword = keyword, PageIndex = page ?? 1, PageSize = 10 }; var query = _db.Achievements.Include(d => d.AchievementCategory).AsQueryable(); if (categoryId > 0) { query = query.Where(d => d.CategoryId == categoryId); } if (!string.IsNullOrEmpty(keyword)) { query = query.Where(d => d.Title.Contains(keyword)); } var pagelist = await query.OrderByDescending(d => d.Id).Skip((vm.PageIndex - 1) * vm.PageSize).Take(vm.PageSize).ProjectTo <AchievementVM>().ToListAsync(); vm.TotalCount = await query.CountAsync(); vm.Achievements = new StaticPagedList <AchievementVM>(pagelist, vm.PageIndex, vm.PageSize, vm.TotalCount); return(vm); }
// GET: Admin/Achievements public async Task <ActionResult> Index(int?page, int?categoryId, string keyword) { AchievementListVM vm = await GetElementsAsync(page, categoryId, keyword); ViewBag.PageSizes = new SelectList(Site.PageSizes()); var categoryList = await _db.AchievementCategories.OrderByDescending(c => c.Importance).ToListAsync(); ViewBag.Categories = new SelectList(categoryList, "Id", "Title"); return(View(vm)); }