Exemplo n.º 1
0
        // GET: Admin/Articles
        public async Task <IActionResult> Index(string keyword, string orderby, string sort, int?categoryId, int?page)
        {
            var vm = new ArticleListVM()
            {
                PageIndex  = page == null || page <= 0 ? 1 : page.Value,
                Keyword    = keyword,
                CategoryId = categoryId,
                PageSize   = SettingsManager.Article.PageSize,
                OrderBy    = orderby,
                Sort       = sort
            };

            //var pageSize = SettingsManager.Article.PageSize;
            var query = _context.Articles.Include(d => d.Category).AsNoTracking().AsQueryable();

            if (!string.IsNullOrEmpty(keyword))
            {
                query = query.Where(d => d.Title.Contains(keyword));
            }

            if (categoryId > 0)
            {
                query = query.Where(d => d.CategoryId == categoryId);
            }


            var gosort = $"{orderby}_{sort}";

            query = gosort switch
            {
                "view_asc" => query.OrderBy(s => s.ViewCount),
                "view_desc" => query.OrderByDescending(s => s.ViewCount),
                "title_asc" => query.OrderBy(s => s.Title),
                "title_desc" => query.OrderByDescending(s => s.Title),
                "date_asc" => query.OrderBy(s => s.Pubdate),
                "date_desc" => query.OrderByDescending(s => s.Pubdate),

                _ => query.OrderByDescending(s => s.Id),
            };


            vm.TotalCount = await query.CountAsync();

            var clients = await query
                          .Skip((vm.PageIndex - 1) *vm.PageSize).Take(vm.PageSize).ProjectTo <ArticleBVM>(_mapper.ConfigurationProvider).ToListAsync();


            vm.Articles = new StaticPagedList <ArticleBVM>(clients, vm.PageIndex, vm.PageSize, vm.TotalCount);

            var categories = await _context.ArticleCategories.AsNoTracking()
                             .OrderByDescending(d => d.Importance).ToListAsync();

            ViewData["Categories"] = new SelectList(categories, "Id", "Title");

            ViewBag.PageSizes = new SelectList(Site.PageSizes());

            return(View(vm));
        }
Exemplo n.º 2
0
        public ActionResult Add()
        {
            ArticleListVM model = new ArticleListVM()
            {
                Categories = service.CategoryService.GetActive(),
                AppUsers   = service.AppUserService.GetActive(),
            };

            return(View(model));
        }
Exemplo n.º 3
0
        public ActionResult Update(Guid id)
        {
            Article       article = service.ArticleService.GetById(id);
            ArticleListVM model   = new ArticleListVM();

            model.Article.ID          = article.ID;
            model.Article.Content     = article.Content;
            model.Article.Header      = article.Header;
            model.Article.PublishDate = article.PublishDate;
            List <Category> categories = service.CategoryService.GetActive();
            List <AppUser>  appUsers   = service.AppUserService.GetActive();

            model.Categories = categories;
            model.AppUsers   = appUsers;
            return(View(model));
        }
Exemplo n.º 4
0
        public async System.Threading.Tasks.Task <ActionResult> Index(int?page, int?categoryId, string Keyword)
        {
            var vm = new ArticleListVM
            {
                CategoryId = categoryId ?? 0,
                PageIndex  = (page ?? 1),
                PageSize   = SettingsManager.Article.PageSize,
                Keyword    = Keyword
            };

            var query = _db.Articles.AsQueryable();

            if (!string.IsNullOrEmpty(Keyword))
            {
                query = query.Where(d => d.Title.Contains(Keyword) || d.Body.Contains(Keyword));
            }
            if (categoryId > 0)
            {
                query = query.Where(d => d.CategoryId == categoryId);
            }

            var articles = await query.OrderByDescending(d => d.Pubdate)
                           .Skip((vm.PageIndex - 1) * vm.PageSize)
                           .Take(vm.PageSize).ProjectTo <ArticleVM>().ToListAsync();


            //   articleListVM.Articles = articleDtos;
            vm.TotalCount = await query.CountAsync();

            vm.Articles = new StaticPagedList <ArticleVM>(articles, vm.PageIndex, vm.PageSize, vm.TotalCount);

            ViewBag.PageSizes = new SelectList(Site.PageSizes());

            var categoryList = await _db.ArticleCategories.OrderByDescending(c => c.Importance).ToListAsync();

            ViewBag.Categories = new SelectList(categoryList, "Id", "Title");


            return(View(vm));
        }