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