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

Offical Documentation

Official Docs: