Name
global.MIMWorkbenchActionsAjaxSNC
Description
SNC version of MIM workbench actions.
Script
var MIMWorkbenchActionsAjaxSNC = Class.create();
MIMWorkbenchActionsAjaxSNC.prototype = Object.extendsObject(AbstractAjaxProcessor, {
initialize: function(request, response, processor) {
AbstractAjaxProcessor.prototype.initialize.call(this, request, response, processor);
},
addChildTasks: function() {
var taskSysId = this.getParameter("sysparm_sys_id");
var table = this.getParameter("sysparm_table");
var selectedTasks = this.getParameter("sysparm_selected_tasks");
var query = this.getParameter("sysparm_query");
var parentColumn = this.getParameter("sysparm_parent_column");
var type = this.getParameter("sysparm_type");
if (!taskSysId) {
gs.log("[addChildTasks] Invalid Parameter - sysparm_sys_id is empty or null");
return;
}
if (!table) {
gs.log("[addChildTasks] Invalid Parameter - sysparm_table is empty or null");
return;
}
if (!parentColumn) {
gs.log("[addChildTasks] Invalid Parameter - sysparm_parent_column is empty or null");
return;
}
var taskGr = new GlideRecordSecure(table);
if (taskGr.canWrite() && taskGr.getElement(parentColumn).canWrite()) {
taskGr.addQuery('sys_id', '!=', taskSysId);
var qc = taskGr.addQuery(parentColumn, '!=', taskSysId);
qc.addOrCondition(parentColumn, 'null');
if (type == 'add_selected')
taskGr.addQuery('sys_id', 'IN', selectedTasks);
else
taskGr.addEncodedQuery(query);
taskGr.setValue(parentColumn, taskSysId);
taskGr.updateMultiple();
}
return;
},
addAffectedLocations: function() {
var taskSysId = this.getParameter("sysparm_sys_id");
var selectedLocations = this.getParameter("sysparm_selected_locations");
var query = this.getParameter("sysparm_query");
var type = this.getParameter("sysparm_type");
if (!taskSysId) {
gs.log("[addAffectedLocations] Invalid Parameter - sysparm_sys_id is empty or null");
return;
}
var taskLocationGr = new GlideRecordSecure('task_location');
if (taskLocationGr.canCreate()) {
if (type == 'add_selected') {
if (!selectedLocations) {
gs.log("[addAffectedLocations] Invalid Parameter - sysparm_selected_tasks is empty or null");
return;
}
selectedLocations = selectedLocations.split(',');
for (var i = 0; i < selectedLocations.length; i++) {
var location = selectedLocations[i];
taskLocationGr = new GlideRecordSecure('task_location');
taskLocationGr.addQuery('task', taskSysId);
taskLocationGr.addQuery('location', location);
taskLocationGr.setLimit(1);
taskLocationGr.query();
if (!taskLocationGr.hasNext()) {
var newTaskLocationGr = new GlideRecordSecure('task_location');
newTaskLocationGr.setValue('task', taskSysId);
newTaskLocationGr.setValue('location', location);
newTaskLocationGr.insert();
}
}
} else if (type == 'add_all') {
var locationGr = new GlideRecordSecure('cmn_location');
locationGr.addEncodedQuery(query);
locationGr.query();
while (locationGr.next()) {
taskLocationGr = new GlideRecordSecure('task_location');
taskLocationGr.addQuery('task', taskSysId);
taskLocationGr.addQuery('location', locationGr.getUniqueValue());
taskLocationGr.setLimit(1);
taskLocationGr.query();
if (!taskLocationGr.hasNext()) {
var newTaskLocationGr1 = new GlideRecordSecure('task_location');
newTaskLocationGr1.setValue('task', taskSysId);
newTaskLocationGr1.setValue('location', locationGr.getUniqueValue());
newTaskLocationGr1.insert();
}
}
}
}
return;
},
addRelatedRecords: function() {
var taskSysId = this.getParameter("sysparm_sys_id");
var table = this.getParameter("sysparm_table");
var selectedRecords = this.getParameter("sysparm_selected");
var query = this.getParameter("sysparm_query");
var parentColumn = this.getParameter("sysparm_parent_column");
var type = this.getParameter("sysparm_type");
if (!taskSysId) {
gs.log("[addRelatedRecords] Invalid Parameter - sysparm_sys_id is empty or null");
return;
}
if (!table) {
gs.log("[addRelatedRecords] Invalid Parameter - sysparm_table is empty or null");
return;
}
if (!parentColumn) {
gs.log("[addRelatedRecords] Invalid Parameter - sysparm_parent_column is empty or null");
return;
}
var relatedRecordGr = new GlideRecordSecure(table);
if (relatedRecordGr.canWrite() && (relatedRecordGr.getElement(parentColumn).canWrite() || table == 'sn_cim_register')) { // TODO: remove skip condition for sn_csi_register, once ITIL user is provided with access to write parent field
var qc = relatedRecordGr.addQuery(parentColumn, '!=', taskSysId);
qc.addOrCondition(parentColumn, 'null');
if (type == 'add_selected')
relatedRecordGr.addQuery('sys_id', 'IN', selectedRecords);
else
relatedRecordGr.addEncodedQuery(query);
relatedRecordGr.setValue(parentColumn, taskSysId);
relatedRecordGr.updateMultiple();
}
return;
},
addRelatedRecordsCIM: function() {
var taskSysId = this.getParameter("sysparm_sys_id");
var table = this.getParameter("sysparm_table");
var selectedRecords = this.getParameter("sysparm_selected");
var type = this.getParameter("sysparm_type");
if (!taskSysId) {
gs.log("[addRelatedRecordsCIM] Invalid Parameter - sysparm_sys_id is empty or null");
return;
}
if (!table) {
gs.log("[addRelatedRecordsCIM] Invalid Parameter - sysparm_table is empty or null");
return;
}
var relatedRecordGr = new GlideRecordSecure(table);
if (relatedRecordGr.canWrite() && relatedRecordGr.getElement('cim_register').canWrite() && relatedRecordGr.getElement('source_id').canWrite() && relatedRecordGr.getElement('source_table').canWrite()) {
if (type == 'add_all') {
var cimRegisterGr = new GlideRecordSecure('sn_cim_register');
cimRegisterGr.query();
while (cimRegisterGr.next())
this._createInboundCIM(cimRegisterGr.getUniqueValue() + "", taskSysId, table);
return;
}
var selectedRecordsArr = selectedRecords.split(",");
for (var i = 0; i < selectedRecordsArr.length; i++)
this._createInboundCIM(selectedRecordsArr[i], taskSysId, table);
}
return;
},
_createInboundCIM: function(cimRegisterId, taskSysId, table) {
var relatedRecordGr = new GlideRecordSecure(table);
relatedRecordGr.addQuery('cim_register', cimRegisterId);
relatedRecordGr.addQuery('source_id', taskSysId);
relatedRecordGr.addQuery('source_table', 'incident');
relatedRecordGr.query();
if (!relatedRecordGr.hasNext()) {
var insertRecordGr = new GlideRecordSecure(table);
insertRecordGr.initialize();
insertRecordGr.setValue("cim_register", cimRegisterId);
insertRecordGr.setValue("source_id", taskSysId);
insertRecordGr.setValue("source_table", "incident");
insertRecordGr.insert();
}
return;
},
type: 'MIMWorkbenchActionsAjaxSNC'
});
Sys ID
bc5fc7b35352111045fdddeeff7b128d