Name
global.WrapUpInteractionUtil
Description
Provides methods to access details about interaction wrap up.
Script
var WrapUpInteractionUtil = Class.create();
WrapUpInteractionUtil.wrapup_config_cache = "WRAP_UP_CONFIGURATION_CACHE";
WrapUpInteractionUtil.table = "interaction_wrap_up_configuration";
WrapUpInteractionUtil.prototype = {
initialize: function() {
this._initPrivateCache(WrapUpInteractionUtil.wrapup_config_cache);
},
/* This function iterates through the wrap up configurations and finds the first active
configuration with conditions that are true for a given interaction. Empty conditions
are true for all interactions. Confgurations are cached. */
getWrapUpConfiguration: function(interaction) {
var configs = GlideCacheManager.get(WrapUpInteractionUtil.wrapup_config_cache, WrapUpInteractionUtil.table);
if (gs.nil(configs))
configs = this._initInteractionWrapUpCache();
else
configs = JSON.parse(configs);
for (var i = 0; i < configs.length; i++) {
var conditions = configs[i].conditions;
if (conditions == null || GlideFilter.checkRecord(interaction, conditions)) {
return configs[i];
}
}
return null;
},
isWrapUpEnabled: function(interaction) {
var wrapUpConfig = this.getWrapUpConfiguration(interaction);
if (wrapUpConfig != null)
return true;
return false;
},
getWrapUpConfigurationSysId: function(interaction) {
var wrapUpConfig = this.getWrapUpConfiguration(interaction);
if (wrapUpConfig != null)
return wrapUpConfig.sys_id;
return null;
},
isWrapUpDurationEnforced: function(interaction) {
var wrapUpConfig = this.getWrapUpConfiguration(interaction);
if (wrapUpConfig != null && wrapUpConfig.enforce_duration == true)
return true;
return false;
},
getWrapUpDuration: function(interaction) {
var wrapUpConfig = this.getWrapUpConfiguration(interaction);
if (wrapUpConfig != null && wrapUpConfig.enforce_duration == true)
return wrapUpConfig.duration;
return -1;
},
isShowWrapUpTimerEnabled: function(interaction) {
var wrapUpConfig = this.getWrapUpConfiguration(interaction);
if (wrapUpConfig != null && wrapUpConfig.enforce_duration == true)
return wrapUpConfig.show_timer == '1';
return false;
},
/**
* Show 'End Wrap Up' button if the Interaction is Assigned to the Current Logged in
* User and interaction is in wrap_up state
*/
showEndWrapUpButton: function(interaction) {
if (interaction.assigned_to == gs.getUserID() && interaction.state == "wrap_up" && interaction.state.canWrite()) {
return true;
}
return false;
},
_initPrivateCache: function(name) {
if (!name)
return;
if (GlideCacheManager.get(name, "_created_") === null) {
GlideCacheManager.addPrivateCacheable(name);
GlideCacheManager.put(name, "_created_", new GlideDateTime().getNumericValue());
}
},
/**
* Interaction Wrap Up configurations are stored in node cache.
* Cache will be loaded lazily whenever a request for the cache arrives.
*/
_initInteractionWrapUpCache: function() {
var gr_config = new GlideRecord(WrapUpInteractionUtil.table);
gr_config.addQuery('active', 'true');
gr_config.orderBy('order');
gr_config.query();
configs = [];
while (gr_config.next()) {
var config = {
name: gr_config.getValue('name'),
sys_id: gr_config.getValue('sys_id'),
conditions: gr_config.getValue('conditions'),
enforce_duration: gr_config.getValue('enforce_duration'),
duration: gr_config.getValue('duration'),
order: gr_config.getValue('order'),
show_timer: gr_config.getValue('show_timer')
};
configs.push(config);
}
if (configs.length > 0) {
GlideCacheManager.put(WrapUpInteractionUtil.wrapup_config_cache, WrapUpInteractionUtil.table, JSON.stringify(configs));
}
return configs;
},
closeStaleInteractions: function(maxWrapupDuration) {
var wrapupTimeout = new GlideDateTime();
wrapupTimeout.addSeconds(-1 * maxWrapupDuration * 60);
var interactionGr = new GlideRecord("interaction");
interactionGr.addQuery('active', true);
interactionGr.addQuery('state', '=', 'wrap_up');
interactionGr.addQuery('state_changed_on', '<', wrapupTimeout.getValue());
interactionGr.query();
interactionGr.setValue('state', 'closed_complete');
interactionGr.setValue('system_wrap_up', true);
interactionGr.updateMultiple();
},
type: 'WrapUpInteractionUtil'
};
Sys ID
a90edc1b0f46a010603bf634a7767ee2