I need to use this wrapper class to sort the returned articles by the CaseAssociationCount in the KnowledgeArticle object. Just having a bit of trouble after getting the wrapper put together.
Here is my lightning component:
cmp
<aura:component implements="forceCommunity:availableForAllPageTypes" controller="GetHBArticles">
<aura:attribute name="searchVar" type="String" />
<aura:attribute name="articles" type="SObject[]"/>
<ui:inputText class="form-control" value="{!v.searchVar}"
placeholder="Search"/>
<ui:button label="Search" press="{!c.getArts}"/>
<aura:iteration var="articles" items="{!v.articles}">
<p>Article ID: {!articles.kav.Id} | Article Title: {!articles.kav.Title} | Article Type: {!articles.kav.ArticleType}</p>
</aura:iteration>
</aura:component>
Client-side Controller
({
getArts: function(cmp){
var action = cmp.get("c.getArticlesList");
action.setParams({ searchTerm : cmp.get("v.searchVar") });
action.setCallback(this, function(response){
var state = response.getState();
if (state === "SUCCESS") {
cmp.set("v.articles", response.getReturnValue());
}
});
$A.enqueueAction(action);
}
})
Wrapper class and server controller
public with sharing class knowledgeArticleWrapper {
@AuraEnabled
public KnowledgeArticleVersion kav {get;set;}
@AuraEnabled
public list<KnowledgeArticle> lstcasearticle {get;set;}
@AuraEnabled
public integer caseAssociationCount {get;set;}
public knowledgeArticleWrapper(){
lstcasearticle = new list<KnowledgeArticle>();
}
}
public with sharing class GetHBArticles {
@AuraEnabled
public static List<knowledgeArticleWrapper> getArticlesList(String searchTerm){
List<knowledgeArticleWrapper> articlesWrapper = new List<knowledgeArticleWrapper> ();
List<KnowledgeArticleVersion> articles = [FIND :searchTerm RETURNING KnowledgeArticleVersion
(Id, Title, ArticleType
WHERE PublishStatus='online' AND Language = 'en_US'
AND ArticleType IN ('Troubleshooting__kav', 'How_To__kav', 'FAQ__kav'))
WITH DATA CATEGORY Topics__c AT *DATACATEGORYNAME*][0];
for(KnowledgeArticleVersion kav :articles ){
knowledgeArticleWrapper kwrap = new knowledgeArticleWrapper();
kwrap.kav = kav;
articlesWrapper.add(kwrap);
}
return articlesWrapper;
}
}