Name

global.GranularApprovalDelegationUtil

Description

This script include contains granular approval delegation APIs. This acts as a middleware layer for approval delegation for workflow and APIs exposed by core platform.

Script

var GranularApprovalDelegationUtil = Class.create();
GranularApprovalDelegationUtil.prototype = {
  initialize: function() {},

  getMyAndDelegatedApprovals: function() {
      var user_id = gs.getUserID();
      var answer = [];
      var approvalGr = new sn_delegation.DelegationUtil().getDelegatedApprovalsForUser(user_id, true);
      while (approvalGr.next())
          answer.push(new String(approvalGr.sys_id));

      return answer;
  },

  getOnlyDelegatedApprovals: function() {
      var user_id = gs.getUserID();
      var answer = [];
      var approvalGr = new sn_delegation.DelegationUtil().getDelegatedApprovalsForUser(user_id, false);
      while (approvalGr.next())
          answer.push(new String(approvalGr.sys_id));

      return answer;
  },

  isMyOrDelegatedApproval: function(gr) {
      var approver = gr.approver + '';
      if (!gr.isValidField('approver'))
          approver = '';
      var approverSysId = gr.sys_id + '';
      if (JSUtil.nil(approver) && JSUtil.notNil(approverSysId)) {
          var app = new GlideRecord('sysapproval_approver');
          if (gr.getTableName() == 'sysapproval_group')
              app.addQuery('group', approverSysId);
          else
              app.addQuery('sysapproval', approverSysId);
          app.query();
          while (app.next()) {
              approver = app.approver;
              if (this._checkApproverOrDelegation(approver, gr))
                  return true;
          }
      }
      return this._checkApproverOrDelegation(approver, gr);
  },

  _checkApproverOrDelegation: function(approver, gr) {
      if (JSUtil.nil(approver))
          return false;

      var user_id = gs.getUserID();
      var user = new String(user_id);
      if (user == approver)
          return true;

      var answer = new sn_delegation.DelegationUtil().isRecordDelegatedToUser(user_id, gr);
      return answer;
  },

  type: 'GranularApprovalDelegationUtil'
};

Sys ID

c28e93a1e7061010fb4820c343f6a91a

Offical Documentation

Official Docs: