API JIVE Search Questions and Discussions

333 views Asked by At

when an user search a discussion, it return all the discussions and questions because a question, it's a discussion with a boolean "question": true.

I want to seperate these, when i search a discussion, it return only discussion type with the boolean question : false and when i search a question, it return only discussion with the boolean question: true.

Can someone help me ?

API.prototype.search = function(discussionName, filter) {

    if (this.debug === true) console.debug("API.search args : ", discussionName, this.jiveAppURL);

    var discussionArray = [];

    console.log(this.jiveAppURL, discussionName, this.discussionsReturnedCount);

    return new Promise(function(resolve, reject) {
        //search questionName
        $this = this;
        this.api.jive.corev3.discussions.get({
            "place": this.jiveAppURL,
            "search": discussionName,
            "count": this.questionsReturnedCount
   // "question": true
            // "tag" : filter
        }).execute(function(results) {
            searchDiscussionByContent(results, $this, discussionName, discussionArray, resolve);
        });
    }.bind(this));
};

function searchDiscussionByContent(results, $this, discussionName, discussionArray, resolve){
  if (!results.error)
    for (var i = 0 ; i < results.list.length ; i++){
      discussion = results.list[i];
   // osapi.jive.core.discussions.get({
   // question: true
  // });
      //if(!ideaArray.some(e => e.id == idea.id))function(r) { r.theString == row.theString[0] }
      if(!discussionArray.some(function(e) { return e.id == discussion.id }))
        discussionArray.push({ id: discussion.id, title: discussion.subject, date: discussion.published, author: discussion.author.displayName, tags: discussion.tags.join(", ") }); 
    }
  //search author
  //get the uri of the first user matching
  osapi.jive.core.get({
    v:"v3",
    href:"/search/people?filter=search(" + discussionName + ")"
  }).execute(function(response) {
    searchDiscussionByPeopel(response, $this, discussionName, discussionArray, resolve);
  });
}

else if (args.isThereFilterFiles == "Question"){
  return new Promise(function(resolve, reject) {

  //question creation
        this.api.jive.corev3.contents.create({
   "type" : "discussion",
   question: true,
            subject: this.formatTitleIdeaContent(args),
            content: {
                "type": "text/html",
                "text": this.formatIdeaContent(args)
            },
            parent: this.jiveAppURL,
            tags: this.formatTagIdeaContent(args)
        }).execute(function(idea) {
            if (idea.error) {
    reject("Fail to create Content", idea.error.code, idea.error.message);
    return;
   }
   
            //setup external properties
            idea.createExtProps(args.extProps).execute(function(res) {
                console.info("res", res);
                if (res.error) reject("Fail to add extraProperties", res.error.code, res.error.message);
                resolve(idea.id);
            });
        });
    }.bind(this))
 } else if(args.isThereFilterFiles == "Discussion"){
  return new Promise(function(resolve, reject) {
       
  //discussion creation
        this.api.jive.corev3.contents.create({
   "type" : "discussion",
   // question: true,
            subject: this.formatTitleIdeaContent(args),
            content: {
                "type": "text/html",
                "text": this.formatIdeaContent(args)
            },
            parent: this.jiveAppURL,
            tags: this.formatTagIdeaContent(args)
        }).execute(function(discussion) {
            if (discussion.error) {
    reject("Fail to create Content", discussion.error.code, discussion.error.message);
    return;
   }
            //setup external properties
            discussion.createExtProps(args.extProps).execute(function(res) {
                console.info("res", res);
                if (res.error) reject("Fail to add extraProperties", res.error.code, res.error.message);
                resolve(discussion.id);
            });
        });
    }.bind(this))
    };

0

There are 0 answers