public ActionResult Index(int year, int category, int page) { var home = Umbraco.TypedContentAtRoot().First(); var overview = home.FirstChild <NewsOverview>(); var items = new List <NewsItem>(); int totalPagesCount = 0; if (overview != null) { //Filter by year if (year == Consts.NewsConfig.YearAllInt) { items = overview.Children.SelectMany(i => i.Children <NewsItem>()).ToList(); } else { var newsByYear = overview.Children.FirstOrDefault(i => i.Name == year.ToString()); if (newsByYear != null) { items = newsByYear.Children <NewsItem>().ToList(); } } //Filter by category if (category == Consts.NewsConfig.NewsCategoryAnnounceInt) { items = items.Where(i => i.IsAnnounce).ToList(); } else if (category != Consts.NewsConfig.NewsCategoryAllInt) { var newsCategories = Utils.GetDataTypePreValues(NewsItem.GetModelPropertyType(i => i.Category).DataTypeId).ToList(); var categoryStr = newsCategories.First(i => i.Id == category).Value; items = items.Where(i => ((string)i.Category).Equals(categoryStr, StringComparison.InvariantCultureIgnoreCase)) .ToList(); } //Sort items items = SortNews(items); //Filter by page totalPagesCount = (int)Math.Ceiling(((double)items.Count / Consts.NewsConfig.NewsPerPage)); if (page != Consts.NewsConfig.PageAllInt) { items = items.Skip((page - 1) * Consts.NewsConfig.NewsPerPage).Take(Consts.NewsConfig.NewsPerPage).ToList(); } } var model = new NewsResult { Items = items, Page = page, TotalPages = totalPagesCount }; return(PartialView("NewsList", model)); }
public ActionResult Index(int year, int category, int page) { var home = Umbraco.TypedContentAtRoot().First(); var overview = home.FirstChild<NewsOverview>(); var items = new List<NewsItem>(); int totalPagesCount = 0; if (overview != null) { //Filter by year if (year == Consts.NewsConfig.YearAllInt) { items = overview.Children.SelectMany(i => i.Children<NewsItem>()).ToList(); } else { var newsByYear = overview.Children.FirstOrDefault(i => i.Name == year.ToString()); if (newsByYear != null) { items = newsByYear.Children<NewsItem>().ToList(); } } //Filter by category if (category == Consts.NewsConfig.NewsCategoryAnnounceInt) { items = items.Where(i => i.IsAnnounce).ToList(); } else if (category != Consts.NewsConfig.NewsCategoryAllInt) { var newsCategories = Utils.GetDataTypePreValues(NewsItem.GetModelPropertyType(i => i.Category).DataTypeId).ToList(); var categoryStr = newsCategories.First(i => i.Id == category).Value; items = items.Where(i => ((string)i.Category).Equals(categoryStr, StringComparison.InvariantCultureIgnoreCase)) .ToList(); } //Sort items items = SortNews(items); //Filter by page totalPagesCount = (int)Math.Ceiling(((double)items.Count / Consts.NewsConfig.NewsPerPage)); if (page != Consts.NewsConfig.PageAllInt) { items = items.Skip((page - 1) * Consts.NewsConfig.NewsPerPage).Take(Consts.NewsConfig.NewsPerPage).ToList(); } } var model = new NewsResult { Items = items, Page = page, TotalPages = totalPagesCount }; return PartialView("NewsList", model); }