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>()
            });
        }
Пример #3
0
        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));
        }
Пример #4
0
        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));
        }