public IEnumerable <EntityCollection> GetRelatedProductsAndArticles(IKnowledgeArticle article) { var serviceContext = this.Dependencies.GetServiceContext(); Fetch fetchRelatedProducts = null; Fetch fetchRelatedArticles = null; var articleConnectionRole = GetArticleConnectionRole(serviceContext, this.KnowledgeArticleConnectionRoleId); var relatedProductConnectionRole = GetArticleConnectionRole(serviceContext, this.RelatedProductConnectionRoleId); if (articleConnectionRole != null && relatedProductConnectionRole != null) { var relatedProductsFetchXml = string.Format(RelatedProductsFetchXmlFormat, article.Id, relatedProductConnectionRole.Id, articleConnectionRole.Id); fetchRelatedProducts = Fetch.Parse(relatedProductsFetchXml); } var languageCondition = string.Empty; if (!string.IsNullOrWhiteSpace(this.LanguageCode)) { languageCondition = "<condition entityname='language_locale' attribute='code' operator='eq' value = '" + this.LanguageCode + "' />"; } var primaryArticleConnectionRole = GetArticleConnectionRole(serviceContext, this.PrimaryArticleConnectionRoleId); var relatedArticleConnectionRole = GetArticleConnectionRole(serviceContext, this.RelatedArticleConnectionRoleId); if (primaryArticleConnectionRole != null && relatedArticleConnectionRole != null) { var id = article.RootArticle == null ? article.Id : article.RootArticle.Id; var relatedArticlesFetchXml = string.Format(RelatedArticlesFetchXmlFormat, id, primaryArticleConnectionRole.Id, relatedArticleConnectionRole.Id, languageCondition); fetchRelatedArticles = Fetch.Parse(relatedArticlesFetchXml); } var products = new EntityCollection(); if (fetchRelatedProducts != null) { products = serviceContext.RetrieveMultiple(fetchRelatedProducts, RequestFlag.AllowStaleData); } var articles = new EntityCollection(); if (fetchRelatedArticles != null) { articles = serviceContext.RetrieveMultiple(fetchRelatedArticles, RequestFlag.AllowStaleData); } return(new List <EntityCollection> { products, articles }.AsEnumerable()); }
public KnowledgeArticleDrop(IPortalLiquidContext portalLiquidContext, IDataAdapterDependencies dependencies, IKnowledgeArticle article) : base(portalLiquidContext, article.Entity) { if (dependencies == null) { throw new ArgumentNullException("dependencies"); } if (article == null) { throw new ArgumentNullException("article"); } Article = article; }
public virtual IEnumerable <IRelatedNote> SelectRelatedNotes(IKnowledgeArticle article) { if (!IsAnnotationSearchEnabled) { return(null); } var annotationDataAdapter = new AnnotationDataAdapter(this.Dependencies); var webPrefix = GetNotesFilterPrefix; var relatedNotes = annotationDataAdapter.GetDocuments(article.EntityReference, webPrefix: webPrefix); return(relatedNotes.Select(a => new RelatedNote(a.NoteText == null ? string.Empty : a.NoteText.ToString().Substring(webPrefix.Length), a.FileAttachment.FileName, a.FileAttachment.Url))); }