Name
global.CaseApprovalUtils
Description
Util file to handle logic for external users approving entities from CSM portal
Script
var CaseApprovalUtils = Class.create();
CaseApprovalUtils.prototype = {
initialize: function() {},
getApprovalRecord: function(approvalGr) {
var approvalRecord = {};
var taskGr = this._getRecordBeingApproved(approvalGr);
var approvalTable = taskGr.getRecordClassName() + "";
if (this._getEntitiesForApproval().indexOf(approvalTable) > -1) {
approvalRecord["table"] = approvalTable;
approvalRecord["sys_id"] = taskGr.getValue("sys_id") + "";
}
return approvalRecord;
},
getApprovalRequestItems: function(approvalId) {
var requestGr = this._getApprovingRecord(approvalId);
return this._getRequestedItems(requestGr.getUniqueValue());
},
_getRequestedItems: function(requestId) {
var reqItems = [];
var reqItemGr = new GlideRecord(CaseApprovalConstants.REQUEST_ITEM_TABLE_NAME);
reqItemGr.addQuery(CaseApprovalConstants.REQUEST_ITEM_ATTRIBUTE_NAME, requestId);
reqItemGr.query();
while(reqItemGr.next() && reqItemGr.canRead()) {
var reqItem = {};
reqItem['number'] = reqItemGr.number + '';
reqItem['sys_id'] = reqItemGr.sys_id + '';
reqItem['short_desc'] = reqItemGr.short_description + '';
reqItem['table'] = reqItemGr.getTableName() + '';
reqItem['cat_item'] = reqItemGr.cat_item.getDisplayValue() + '';
reqItems.push(reqItem);
}
return reqItems;
},
_getEntitiesForApproval: function() {
/*
* If there is any other new extension instance other than the OOB one, concat them together
* The extension instance with higher order number would overwrite the one with lower order number
*/
var ep = new GlideScriptedExtensionPoint().getExtensions(CaseApprovalConstants.CASE_APPROVALS_EXTENSION_POINT);
var entitiesForApproval = [];
for (var i = 0; i < ep.length; i++) {
var point = ep[i];
entitiesForApproval = point.getApprovalEntities(entitiesForApproval);
}
return entitiesForApproval;
},
_getApprovingRecord: function(approvalId) {
var approvalGr = new GlideRecord("sysapproval_approver");
approvalGr.get(approvalId);
return this._getRecordBeingApproved(approvalGr);
},
_getRecordBeingApproved: function(taskGr) {
if (!taskGr.sysapproval.nil())
return taskGr.sysapproval.getRefRecord();
return taskGr.document_id.getRefRecord();
},
type: 'CaseApprovalUtils'
};
Sys ID
6077544d87cf33009ffb8467a7cb0bc1