public async Task <ActionResult> Detail(string title, long id)
        {
            var articleCategory = await _repository.GetRepository <ArticleCategory>().ReadAsync(o => o.ArticleId == id);

            if (articleCategory != null)
            {
                Category category = await _repository.GetRepository <Category>().ReadAsync(articleCategory.CategoryId);

                Category rootCategory = new SharedController().GetRootCategory(category);
                ViewBag.RootCategory = rootCategory;
                ViewBag.CategoryId   = articleCategory.CategoryId;
                ViewBag.Category     = category;
            }
            var article = _repository.GetRepository <Article>().Read(id);

            if (article.Status != 4)
            {
                return(RedirectToRoute("FrontEndHomeIndex"));
            }
            article.Views = article.Views + 1;
            try
            {
                await _repository.GetRepository <Article>().UpdateAsync(article, 0);
            }
            catch { }
            return(View(article));
        }
        public async Task <ActionResult> Index(string categoryName, long categoryId, int p = 1)
        {
            Category category = await _repository.GetRepository <Category>().ReadAsync(categoryId);

            Category rootCategory = new SharedController().GetRootCategory(category);

            ViewBag.CategoryName = category.Name;
            ViewBag.RootCategory = rootCategory;
            ViewBag.CategoryId   = categoryId;
            ViewBag.Category     = category;

            if (category.CategoryId == null && category.DisplayType.HasValue &&
                (category.DisplayType.Value == 1 || category.DisplayType.Value == 3 || category.DisplayType.Value == 5))
            {
                if (category.DisplayType.Value == 5)
                {
                    List <Category> categories = new List <Category>();
                    if (category.Categories != null && category.Categories.Any())
                    {
                        foreach (var item in category.Categories.OrderBy(o => o.OrdinalNumber))
                        {
                            if (item.Categories != null && item.Categories.Any())
                            {
                                categories.AddRange(item.Categories.OrderBy(o => o.OrdinalNumber));
                            }
                        }
                    }
                    return(View("Category5", categories));
                }
                if (category.DisplayType.Value == 1)
                {
                    return(View("Category1"));//Không cần sanh sách bài viết
                }
                if (category.DisplayType.Value == 3)
                {
                    return(View("Category3"));//Không cần sanh sách bài viết
                }
            }

            int take     = 12;
            int skip     = (p - 1) * take;
            var articles = _repository.GetRepository <Article>().GetAll(o => o.Status == 4)
                           .Join(_repository.GetRepository <ArticleCategory>().GetAll(o => o.CategoryId == categoryId), b => b.Id, c => c.ArticleId, (b, c) => new { Article = b }).Select(x => x.Article)
                           .OrderByDescending(o => o.UpdateDate).ToList <Article>();

            if (articles == null || articles.AsQueryable().Count() == 0)
            {
                //var categoryIds = GetChildCategoryIds(rootCategory);
                var categoryIds = GetChildCategoryIds(category);
                articles = _repository.GetRepository <Article>().GetAll(o => o.Status == 4)
                           .Join(_repository.GetRepository <ArticleCategory>().GetAll(o => categoryIds.Contains(o.CategoryId)), b => b.Id, c => c.ArticleId, (b, c) => new { Article = b }).Select(x => x.Article)
                           .OrderByDescending(o => o.UpdateDate).ToList <Article>();
            }
            ViewBag.PagingInfo = new PagingInfo
            {
                CurrentPage  = p,
                ItemsPerPage = take,
                TotalItems   = articles.AsQueryable().Count()
            };
            articles = articles.OrderByDescending(o => o.UpdateDate).Skip(skip).Take(take).ToList();

            if (category.CategoryId == null && category.DisplayType.HasValue && category.DisplayType.Value == 2)
            {
                return(View("Category2", articles));
            }
            if (category.CategoryId == null && category.DisplayType.HasValue && category.DisplayType.Value == 4)
            {
                return(View("Category4", articles));
            }
            //return View(articles);//Bỏ cái này
            return(View("Category2", articles));
        }