Willy Nguyen
Willy Nguyen

Reputation: 19

API JIVE Search Questions and Discussions

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))
    };

Upvotes: 0

Views: 347

Answers (0)

Related Questions