Exemple #1
0
        // 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));
        }
Exemple #2
0
        // 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));
        }