Name
global.CSMPortalUtils
Description
It contains utility methods to perform operations related to CSM portals.
Script
var CSMPortalUtils = Class.create();
CSMPortalUtils.prototype = {
initialize: function() {
this.TABLE_SYS_PROPERTIES = 'sys_properties';
this.TABLE_SYS_ANALYTICS_BUCKET = 'sys_analytics_bucket';
this.TABLE_SP_PORTAL = 'sp_portal';
this.ANALYTICS_PLUGIN_NAME = 'com.glide.service-portal.analytics';
this.PROPERTY_FORCED_TRACKING = 'glide.analytics.tracking.force_allowed.portals';
},
addSysIdtoProperty: function(sysId, propertyName) {
var propertyValue = gs.getProperty(propertyName);
if (propertyValue != null) {
var portalSysIds = propertyValue.split(',').map(function(e) {
return e.trim();
});
var isIdPresent = (portalSysIds.indexOf(sysId) > -1);
//If SysId is not present
if (!isIdPresent) {
var gr = new GlideRecord(this.TABLE_SYS_PROPERTIES);
gr.addActiveQuery();
gr.addQuery('name', propertyName);
gr.query();
if (gr.next()) {
if (portalSysIds == '')
gr.value = sysId;
else
gr.value = portalSysIds + ',' + sysId;
gr.update();
}
}
}
},
removeSysIdfromProperty: function(sysId, propertyName) {
var propertyValue = gs.getProperty(propertyName);
if (propertyValue != null) {
var portalSysIds = propertyValue.split(',').map(function(e) {
return e.trim();
});
var indexOfId = portalSysIds.indexOf(sysId);
var isIdPresent = (indexOfId > -1);
if (isIdPresent) {
var gr = new GlideRecord(this.TABLE_SYS_PROPERTIES);
gr.addActiveQuery();
gr.addQuery('name', propertyName);
gr.query();
if (gr.next()) {
//Removing the sys Id from array
portalSysIds.splice(indexOfId, 1);
gr.value = portalSysIds.join();
gr.update();
}
}
}
},
/*
sysId - The sys_id of the portal for which Analytics Settings are to be configured
trackAuthenticatedUsers - boolean, to indicate whether to track Logged-in/Authenticated Users
trackUnauthenticatedUsers - boolean, to indicate whether to track Unauthenticated Users
*/
manageAnalyticsSettings: function(sysId, trackAuthenticatedUsers, trackUnauthenticatedUsers) {
var isSettingsEnabled = false;
var isSettingsExistforPortal = false;
if (pm.isActive(this.ANALYTICS_PLUGIN_NAME))
isSettingsEnabled = sn_app_analytics.SNAnalytics.isEnabled();
if (isSettingsEnabled)
isSettingsExistforPortal = sn_sp_analytics.SPAnalytics.settingsExistForPortal(sysId);
if (isSettingsEnabled) {
//Record does not exist,Creating a new Record for this portal when enabled value is true
if (!isSettingsExistforPortal && trackAuthenticatedUsers) {
try {
sn_sp_analytics.SPAnalytics.createSettingsForPortal(sysId, 'service_portal');
this.updateAnalyticsSettings(sysId, trackAuthenticatedUsers, trackUnauthenticatedUsers);
this.addSysIdtoProperty(sysId, this.PROPERTY_FORCED_TRACKING);
} catch (err) {
return gs.getMessage('Unable to create Service Portal Analytics Settings for this entry');
}
} else if (isSettingsExistforPortal) {
try {
//Setting values for 'Enabled' and 'Unauthenticated User Tracking' fields to new values
this.updateAnalyticsSettings(sysId, trackAuthenticatedUsers, trackUnauthenticatedUsers);
} catch (err) {
return gs.getMessage('Unable to change Service Portal Analytics Settings for this entry');
}
}
}
},
updateAnalyticsSettings: function(sysId, trackAuthenticatedUsers, trackUnauthenticatedUsers) {
var gr = new GlideRecord(this.TABLE_SYS_ANALYTICS_BUCKET);
gr.addQuery('bucket_table_name', this.TABLE_SP_PORTAL);
gr.addQuery('bucket_document_id', sysId);
gr.query();
if (gr.next()) {
gr.setValue('enabled', trackAuthenticatedUsers);
gr.setValue('enable_unauthenticated_user_tracking', trackUnauthenticatedUsers);
gr.update();
}
},
deleteSettingsForPortal: function(sysId) {
var gr = new GlideRecordSecure(this.TABLE_SYS_ANALYTICS_BUCKET);
gr.addQuery('bucket_table_name', this.TABLE_SP_PORTAL);
gr.addQuery('bucket_document_id', sysId);
gr.query();
if (gr.next()) {
gr.deleteRecord();
}
},
canAccessWorkOrders: function(){
if(gs.hasRole("sn_customerservice.service_organization_contributor") && !gs.hasRole("admin"))
return false;
return true;
},
canAccessOrders: function(){
return !((gs.hasRole("sn_customerservice.service_organization_contributor") || gs.hasRole("sn_customerservice.proxy_contact")) && !gs.hasRole("admin"));
},
canAccessSupport: function(){
return (!gs.hasRole("sn_customerservice.case_contributor_creator") ||
gs.hasRole("admin") ||
gs.hasRole("sn_customerservice.service_organization_contributor"));
},
type: 'CSMPortalUtils'
};
Sys ID
be6414d0c3302010a6f3f97c9840dd4f