//*************************************************************
        // Please don't do this, this is just for demo
        // In a real world situation, logic should not be
        // in the controller and if you do this a poor kitten dies
        //*************************************************************

        private RelatedContent GetRelatedArticles(IRelatedItemConfiguration configItem)
        {
            RelatedContent viewModel = new RelatedContent(configItem, null);

            if (configItem.FilterRoot != null)
            {
                foreach (var item in configItem.FilterRoot.Children)
                {
                    if (item.TemplateName == "ArticlePage")
                    {
                        viewModel.RelatedItems.Add(item);
                    }
                }
            }

            return(viewModel);
        }
        private RelatedContent GetRelatedTaggedContent(IRelatedItemConfiguration configItem, IRelatedContentFilter parameters)
        {
            int            count     = 0;
            RelatedContent viewModel = new RelatedContent(configItem, parameters);

            foreach (var item in configItem.FilterRoot.Children)
            {
                if (count == parameters.DisplayCount)
                {
                    break;
                }

                if (parameters.Tags.Select(x => x.Text).Intersect(item.ProductTags.Select(x => x.Text)).Any())
                {
                    viewModel.RelatedItems.Add(item);
                    count++;
                }
            }

            return(viewModel);
        }
 public RelatedContent(IRelatedItemConfiguration content, IRelatedContentFilter parameters)
 {
     Content      = content;
     Parameters   = parameters;
     RelatedItems = new List <IPage>();
 }