// GET: Admin/Works public async Task <IActionResult> Index(int?page, int?solutionId) { var vm = new WorkPageVM() { PageIndex = page == null || page <= 0 ? 1 : page.Value, SolutionId = solutionId }; const int pageSize = 12; var query = _context.Works.Include(d => d.Solution).Include(d => d.Client).AsNoTracking().AsQueryable(); if (vm.SolutionId > 0) { query = query.Where(d => d.SolutionId == vm.SolutionId); } vm.TotalCount = await query.CountAsync(); var works = await query.OrderByDescending(d => d.Id) .Skip((vm.PageIndex - 1) * pageSize).Take(pageSize).ProjectTo <WorkBVM>(_mapper.ConfigurationProvider) .ToListAsync(); vm.Works = new StaticPagedList <WorkBVM>(works, vm.PageIndex, pageSize, vm.TotalCount); ViewData["Solutions"] = new SelectList(await _context.Solutions.AsNoTracking() .OrderByDescending(d => d.Importance).ToListAsync(), "Id", "Title"); return(View(vm)); }
// GET: Admin/Works public async Task <IActionResult> Index(string keyword, string sort, int?solutionId, int?page) { var vm = new WorkPageVM() { PageIndex = page == null || page <= 0 ? 1 : page.Value, Keyword = keyword, SolutionId = solutionId, PageSize = 10 }; //var pageSize = SettingsManager.Work.PageSize; var query = _context.Works.Include(d => d.Solution).Include(d => d.Client).AsNoTracking().AsQueryable(); if (!string.IsNullOrEmpty(keyword)) { query = query.Where(d => d.Title.Contains(keyword)); } if (solutionId > 0) { query = query.Where(d => d.SolutionId == solutionId); } ViewData["ViewSortParm"] = sort == "view" ? "view_desc" : "view"; ViewData["TitleSortParm"] = sort == "title" ? "title_desc" : "title"; ViewData["DateSortParm"] = sort == "date" ? "date_desc" : "date"; query = sort switch { "view" => query.OrderBy(s => s.ViewCount), "view_desc" => query.OrderByDescending(s => s.ViewCount), "title" => query.OrderBy(s => s.Title), "title_desc" => query.OrderByDescending(s => s.Title), "date" => query.OrderBy(s => s.FinishYear), "date_desc" => query.OrderByDescending(s => s.FinishYear), _ => query.OrderByDescending(s => s.FinishYear), }; vm.TotalCount = await query.CountAsync(); var clients = await query .Skip((vm.PageIndex - 1) *vm.PageSize).Take(vm.PageSize).ProjectTo <WorkBVM>(_mapper.ConfigurationProvider).ToListAsync(); vm.Works = new StaticPagedList <WorkBVM>(clients, vm.PageIndex, vm.PageSize, vm.TotalCount); var solutions = await _context.Solutions.AsNoTracking() .OrderByDescending(d => d.Importance).ToListAsync(); ViewData["Solutions"] = new SelectList(solutions, "Id", "Title"); ViewBag.PageSizes = new SelectList(Site.PageSizes()); return(View(vm)); }