public async Task <AllPostsViewModel> HandleAsync(GetAllPostsByCategoryViewModelQuery query) { var categories = await _context.Categories.AsNoTracking().ToListAsync(); var viewCategories = new List <PostsByCategoryViewModel>(); foreach (var c in categories) { var bpcs = await _context.BlogPostCategory .AsNoTracking() .Where(bp => bp.CategoryId == c.Id && bp.BlogPost.Public == true && bp.BlogPost.PublishOn < DateTime.Now) .Include(bpc => bpc.BlogPost) .ThenInclude(bp => bp.Author) .ToListAsync(); var vpbc = new PostsByCategoryViewModel() { Category = c, Posts = bpcs.Select(bp => bp.BlogPost).ToList() }; viewCategories.Add(vpbc); } return(new AllPostsViewModel() { PostsByDate = null, SortBy = 1, Categories = viewCategories ?? new List <PostsByCategoryViewModel>() }); }
public async Task <AllPostsViewModel> HandleAsync(GetAllPostsByCategoryViewModelQuery query) { var categories = await _context.Categories.AsNoTracking().ToListAsync(); var viewCategories = new List <PostsByCategoryViewModel>(); foreach (var c in categories) { var bpcs = await _context.BlogPostCategory .AsNoTracking() .Where(bp => bp.CategoryId == c.Id && bp.BlogPost.Public == true && bp.BlogPost.PublishOn < DateTime.Now) .Include(bpc => bpc.BlogPost) .ThenInclude(bp => bp.Author) .OrderByDescending(bp => bp.BlogPost.PublishOn) .ThenByDescending(bp => bp.BlogPost.ModifiedAt) .ToListAsync(); var vpbc = new PostsByCategoryViewModel() { Category = c, Posts = bpcs.Select(bp => bp.BlogPost).ToList() }; viewCategories.Add(vpbc); } var NoCategory = new Category() { Name = "No Category" }; var ncbps = await _context.BlogPosts.AsNoTracking() .Include(bpc => bpc.BlogPostCategory) .Where(bpc => bpc.BlogPostCategory.Count == 0 && bpc.Public == true && bpc.PublishOn < DateTime.Now) .Include(bp => bp.Author) .ToListAsync(); if (ncbps.Count > 0) { var ncvpbc = new PostsByCategoryViewModel() { Category = NoCategory, Posts = ncbps }; viewCategories.Add(ncvpbc); } return(new AllPostsViewModel() { PostsByDate = null, SortBy = 1, Categories = viewCategories ?? new List <PostsByCategoryViewModel>() }); }
public ActionResult Index(string categoryType) { PostsByCategoryViewModel ByCategoryVM = null; List <ArticleItem> articles = null; DataAccessLayer datalayer = null; CategoryItem category = null; List <NewsItem> breakingNewsItems = null; List <RelatedNewsItem> relatedNews = null; //check if categoryType is valid category if (!string.IsNullOrEmpty(categoryType)) { datalayer = new DataAccessLayer(); articles = datalayer.GetArticlesByCategory(categoryType); if (articles != null) { if (articles.Count > 0) { category = new CategoryItem { Id = articles[0].Category.Id, Name = articles[0].Category.Name, Name_english = articles[0].Category.Name_english }; } } //populate breaking news breakingNewsItems = datalayer.GetBreakingNews(); relatedNews = datalayer.GetRelatedNews(categoryType, 5); } else { //redirect to home page for empty or null category input return(RedirectToAction("Index", "Home")); } ByCategoryVM = new PostsByCategoryViewModel(); ByCategoryVM.Articles = articles; ByCategoryVM.Category = category; ByCategoryVM.BreakingNewsItems = breakingNewsItems; ByCategoryVM.RelatedNews = relatedNews; return(View(ByCategoryVM)); }
public IActionResult PostCategory(int id) { var model = new PostsByCategoryViewModel(); var items = _postService.GetPostByCategory(id); model.CategoryTitle = _categoryService.GetById(id)?.Title; model.PostList = items; model.BestPosts = items.OrderByDescending(p => p.ViewCount).Take(6).ToList(); #region SEO ViewData["Title"] = $"دسته ${model.CategoryTitle}"; ViewData["MetaDescription"] = $"دسته ${model.CategoryTitle}"; #endregion return(View(model)); }