public NewsPromoSectionViewModel GetRelatedNews()
        {
            var contextItem = RenderingContext.Current.Rendering.Item;

            var vm = new NewsPromoSectionViewModel();

            // TODO: add to constants or retrieve from settings/localization, or retrieve from field
            if (!string.IsNullOrEmpty(contextItem[Templates.NewsArticle.Fields.NewsListPage]))
            {
                vm.DetailsPage.Url    = contextItem.LinkFieldUrl(Templates.NewsArticle.Fields.NewsListPage);
                vm.DetailsPage.Text   = contextItem.LinkFieldText(Templates.NewsArticle.Fields.NewsListPage);
                vm.DetailsPage.Target = contextItem.LinkFieldTarget(Templates.NewsArticle.Fields.NewsListPage);
            }

            var articleIds = contextItem[Templates.NewsArticle.Fields.RelatedArticles]?.Split("|".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

            foreach (var articleId in articleIds)
            {
                try
                {
                    var article = context.Database.GetItem(articleId);
                    if (article != null)
                    {
                        var model = new NewsListModel(article);
                        vm.Articles.Add(model);
                    }
                }
                catch (Exception)
                {
                    // TODO: log error
                }
            }

            return(vm);
        }
        public NewsPromoSectionViewModel GetNewsPromos()
        {
            var contextItem = RenderingContext.Current.Rendering.Item;

            var vm = new NewsPromoSectionViewModel();

            vm.Title = contextItem[Templates.ExpertAdviceGroup.Fields.Title];
            LinkField lnk = contextItem.Fields[Templates.ExpertAdviceGroup.Fields.ListPage];

            vm.DetailsPage.Text = lnk.Text;
            vm.DetailsPage.Url  = lnk.GetFriendlyUrl();

            var articleIds = contextItem[Templates.ExpertAdviceGroup.Fields.Articles]?.Split("|".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

            foreach (var articleId in articleIds)
            {
                try
                {
                    var article = context.Database.GetItem(articleId);
                    if (article != null)
                    {
                        var model = new NewsListModel(article);
                        vm.Articles.Add(model);
                    }
                }
                catch (Exception)
                {
                    // TODO: Log error
                }
            }

            return(vm);
        }
        private NewsPromoSectionViewModel GetNewsSection(int page = 1, int pageSize = 3, List <string> filters = null, List <string> types = null)
        {
            var vm = new NewsPromoSectionViewModel();

            for (var i = 0; i < pageSize; i++)
            {
                var model = new NewsListModel();
                model.Title            = $"News Item {i + 1}";
                model.Summary          = "Lorem ipsum summary for news item in list view.";
                model.BackgroundImage  = "https://dummyimage.com/600x400/000/fff&text=News+Image";
                model.DetailsLink.Text = "Read More";
                model.DetailsLink.Url  = "/expert-advice";

                vm.Articles.Add(model);
            }

            vm.DetailsPage = new Glass.Mapper.Sc.Fields.Link()
            {
                Text = "More", Url = "/expert-advice"
            };
            vm.Title = "Section Title";

            return(vm);
        }