public GridControlLatestNewsEventsBlockValue(GridControl control, JToken obj) : base(control, obj as JObject) { GridControlLatestNewsEventsBlockItem = JsonConvert.DeserializeObject <GridControlLatestNewsEventsBlockItem>(obj.ToString()); var homePage = new UmbracoHelper(UmbracoContext.Current).TypedContent(LatestNewsEventsBlockConfig.HomePageId); var closestFutureEvent = homePage .Descendants(LatestNewsEventsBlockConfig.EventsConfig.PageAlias) .ToArray() .Where(eventPage => eventPage.GetPropertyValue <DateTime>(LatestNewsEventsBlockConfig.EventsConfig.StartDate) >= DateTime.Today || eventPage.GetPropertyValue <DateTime>(LatestNewsEventsBlockConfig.EventsConfig.EndDate) >= DateTime.Today) .OrderBy(eventPage => eventPage.GetPropertyValue <DateTime>(LatestNewsEventsBlockConfig.EventsConfig.StartDate)) .FirstOrDefault(); var newsToTakeCount = closestFutureEvent != null ? 2 : 3; var newsAndEvents = homePage.Descendants(LatestNewsEventsBlockConfig.NewsConfig.PageAlias) .ToArray() .OrderByDescending(newsPage => newsPage.GetPropertyValue <DateTime>(LatestNewsEventsBlockConfig.NewsConfig.Date)) .Take(newsToTakeCount) .ToList(); if (closestFutureEvent != null) { newsAndEvents.Add(closestFutureEvent); } GridControlLatestNewsEventsBlockItem.Tiles = newsAndEvents.Select(MapToTile); }
public ActionResult NewsList(GridControlNewsListDataSourceItem[] dataSources, int page = 1) { var allNews = new List <NewsListItem>(); var totalNewsCount = 0; if (dataSources != null && dataSources.Length > 0) { foreach (var dataSourceItem in dataSources) { var dataSourceContent = new UmbracoHelper(UmbracoContext.Current).TypedContent(dataSourceItem.Id); allNews.AddRange(dataSourceContent.Descendants(NewsListBlockConfig.NewsPageAlias) .Where(newsPage => newsPage.IsVisible()) .Select(newsPage => new NewsListItem { Url = newsPage.Url, Title = newsPage.GetPropertyValue <string>(NewsListBlockConfig.Title), Description = newsPage.GetPropertyValue <string>(NewsListBlockConfig.Description), Date = newsPage.GetPropertyValue <DateTime>(NewsListBlockConfig.Date), Image = newsPage.GetPropertyValue <IPublishedContent>(NewsListBlockConfig.Image)?.Url })); } totalNewsCount = allNews.Count; } return(View("/App_Plugins/NewsListBlock/Views/NewsList.cshtml", new NewsListBlockModel { News = allNews.OrderByDescending(x => x.Date).Skip((page - 1) * NewsListBlockConfig.PageSize).Take(NewsListBlockConfig.PageSize), PageNavigationModel = new PageNavigationModel(page, (int)Math.Ceiling((decimal)totalNewsCount / NewsListBlockConfig.PageSize), totalNewsCount, NewsListBlockConfig.PageSize) })); }
public ActionResult EventsList(GridControlEventsListDataSourceItem[] dataSources, int page = 1) { var allEvents = new List <EventsListItem>(); var totalEventsCount = 0; if (dataSources != null && dataSources.Any()) { foreach (var dataSourceItem in dataSources) { var dataSourceContent = new UmbracoHelper(UmbracoContext.Current).TypedContent(dataSourceItem.Id); allEvents.AddRange(dataSourceContent.Descendants(EventsListBlockConfig.EventPageAlias) .Where(x => x.IsVisible()) .Select(x => new EventsListItem { Title = x.GetPropertyValue <string>(EventsListBlockConfig.Title), Description = x.GetPropertyValue <string>(EventsListBlockConfig.Summary), Url = x.Url, Date = x.GetPropertyValue <DateTime>(EventsListBlockConfig.Date), Image = x.GetPropertyValue <IPublishedContent>(EventsListBlockConfig.Image)?.Url, Location = x.GetPropertyValue <string>(EventsListBlockConfig.Location) })); } totalEventsCount = allEvents.Count; } var events = allEvents.OrderByDescending(x => x.Date) .Skip((page - 1) * EventsListBlockConfig.PageSize) .Take(EventsListBlockConfig.PageSize); return(View("/App_Plugins/EventsListBlock/Views/EventsList.cshtml", new EventsListBlockModel { Events = events, PageNavigationModel = new PageNavigationModel(page, totalEventsCount, EventsListBlockConfig.PageSize) })); }