Name

sn_oe_sfs.CollabChatUtils

Description

No description available

Script

var CollabChatUtils = Class.create();
CollabChatUtils.prototype = {
  initialize: function() {
  },
  isCollabChatMember: function (collabChatSysId, userSysId) {
  	var gr = new GlideRecord("sys_cs_collab_member");
  	gr.addQuery("collab_chat", collabChatSysId);
  	gr.addQuery("member.user_document", userSysId);
  	gr.query();
  	return gr.next();
  },
  canReadBaseRecord: function (collabChatSysId) {
  	var gr = new GlideRecord("sys_cs_collab_record");
  	gr.addQuery("collab_chat", collabChatSysId);
  	gr.query();
  	return gr.next() && gr.canRead();
  },
  getSubscription: function(resource, subscriptions) {
  	if (!subscriptions || subscriptions.length == 0)
  		return null;

  	for(var i = 0; i < subscriptions.length; i++) {
  		var subscription = subscriptions[i];
  		if (subscription.resource.includes(resource))
  			return subscription;
  	}

  	return null;
  },
  getTeamsAppInfo: function(teamsChannelId) {
  	var providerGR = new GlideRecord('sys_cs_collab_provider');
  	providerGR.addQuery('channel', teamsChannelId);
  	providerGR.addActiveQuery();
  	providerGR.query();

  	if (providerGR.next()) {
  		var providerId = providerGR.getUniqueValue();
  		var providerApplicationGR = new GlideRecord('sys_cs_collab_provider_application');
  		providerApplicationGR.addQuery('provider', providerId);
  		providerApplicationGR.addActiveQuery();
  		providerApplicationGR.query();

  		if (providerApplicationGR.next()) {
  			return {
  				'teamsAppId': providerApplicationGR.getValue('app_id'),
  				'applicationId': providerApplicationGR.admin_connection.credential.oauth_entity_profile.oauth_entity.client_id
  			};
  		}
  	}

  	return null;
  },
  unSubscribeTeams: function(teamsChannelId) {
  	var appInfo = this.getTeamsAppInfo(teamsChannelId);
  	var teamsAppId = appInfo.teamsAppId;
  	var applicationId = appInfo.applicationId;
  	var allMembersResource = 'getAllMembers';
  	var allMessagesResource = 'getAllMessages';

  	var getChatSubScrResult = sn_fd.FlowAPI.executeActionQuick('sn_oe_sfs.get_chat_subscription', {
  		application_id: applicationId
  	});
  	var subscriptions = JSON.parse(getChatSubScrResult.subscriptions);
  	var subscriptionAllMembers = this.getSubscription(allMembersResource, subscriptions);
  	var subscriptionAllMessages = this.getSubscription(allMessagesResource, subscriptions);
  	if (subscriptionAllMembers !== null) {
  		var unSubscriptionResultAllMembers = sn_fd.FlowAPI.executeActionQuick('sn_oe_sfs.unsubscribe_chat', {
  			subscription_id: subscriptionAllMembers.id
  		});
  	}
  	if (subscriptionAllMessages !== null) {
  		var unSubscriptionResultAllMessages = sn_fd.FlowAPI.executeActionQuick('sn_oe_sfs.unsubscribe_chat', {
  			subscription_id: subscriptionAllMessages.id
  		});
  	}
  },
  trimStringInputs: function(inputs) {
      for (var key in inputs) {
          if (inputs[key] && typeof inputs[key] == 'string') {
              inputs[key] = inputs[key].trim();
          }
      }
      return inputs;
  },
  checkMandatoryInputs: function(inputs, mandatoryInputs) {
      for (var inputName in mandatoryInputs) {
          if (!inputs[inputName]) {
              var errMsg =
                  mandatoryInputs[inputName] +
                  " is empty or null. Provide valid value for " + mandatoryInputs[inputName] + ".";
              gs.error(errMsg);
              throw new Error(errMsg);
          }
      }
  },
  processSubscriptionResponse: function(response, subscription) {
      subscription["id"] = response["id"];
      subscription["resource"] = response["resource"];
      subscription["creator_id"] = response["creatorId"];
      subscription["change_type"] = response["changeType"];
      subscription["notification_url"] = response["notificationUrl"];
      var expiry = response["expirationDateTime"] ?
          response["expirationDateTime"].split("T") :
          "";
      subscription["expiration_date_time"] =
          expiry[0] + " " + (expiry[1] ? expiry[1].slice(0, -1) : "");
  },
  convertDateToUTC: function(date) {
      var finalDate = "";
      try {
          var gtd = new GlideDateTime(date);
          gtd.addSeconds("0");
          var utcDateTime = gtd.getValue();
          var dateArray = utcDateTime.split(" ");
          finalDate = dateArray[0] + "T" + dateArray[1] + "Z";
          return finalDate;
      } catch (e) {
          finalDate = date;
          return finalDate;
      }
  },
  validateDate: function(date) {
      return date.match(
          /^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/
      );
  },
  exportPublicKeyToCertificate: function(publicKeyId, exportType) {
  	return sn_collab.CollabChatScriptObject.exportPublicKeyToCertificate(publicKeyId, exportType);
  },
  type: 'CollabChatUtils'
};

Sys ID

8b914851c3b13010fe394f877840dd30

Offical Documentation

Official Docs: