Name

global.UserCriteriaUtils

Description

No description available

Script

var UserCriteriaUtils = Class.create();
UserCriteriaUtils.prototype = {
  initialize: function() {},
  // query table based on sys_id, return name
  getUserCriteriaById: function(id) {

      var errMsg = '';
      var trip = '';
      var outputUsers = [];
      var userList = [];
      var ucRec = new GlideRecord("user_criteria");
      ucRec.addEncodedQuery("sys_idIN" + id.toString());
      ucRec.query();
      while (ucRec.next()) {

          if (ucRec.match_all == true) {
              errMsg = 'match';
              trip = _errorThrow(errMsg, ucRec.name);
          }
          if (ucRec.advanced == true) {
              errMsg = 'advanced';
              trip = _errorThrow(errMsg, ucRec.name);
          }
          if (trip != '') {
              gs.info(trip);
          } else {
              if (ucRec.user != '') {
                  userList.push(this._getUserCriteriaUsers(ucRec.user));
                  outputUsers.push(userList);
              }
              if (ucRec.group != '') {
                  userList = this._getUserCriteriaGroup(ucRec.group);
                  for (var i in userList) {
                      outputUsers.push(userList);
                  }
              }
              if (ucRec.role != '') {
                  userList += this._getUserCriteriaRole(ucRec.role);
                  for (var i in userList) {
                      outputUsers.push(userList);
                  }
              }
              if (ucRec.company != '') {
                  userList += this._getUserCriteriaCompany(ucRec.company);
                  for (var i in userList) {
                      outputUsers.push(userList);
                  }
              }
              if (ucRec.location != '') {
                  userList += this._getUserCriteriaLocation(ucRec.location);
                  for (var i in userList) {
                      outputUsers.push(userList);
                  }
              }
              if (ucRec.department != '') {
                  userList += this._getUserCriteriaDepartment(ucRec.department);
                  for (var i in userList) {
                      outputUsers.push(userList);
                  }
              }
          }
      }

      return outputUsers;
  },

  // The following functions take the data provided on the user criteria record for each field and return an array of user sys_ids matching the user criteria
  _getUserCriteriaUsers: function(data) {
      return data;
  },

  _getUserCriteriaGroup: function(data) {
      var list = [];
      var dataTxt = '';
      dataTxt = data.toString();
      var groupRec = new GlideRecord('sys_user_grmember');
      groupRec.addEncodedQuery('group.sys_idIN' + dataTxt);
      groupRec.query();
      while (groupRec.next()) {
          list.push(groupRec.user.toString());
      }
      return list;
  },

  _getUserCriteriaRole: function(data) {
      var list = [];
      var dataTxt = '';
      dataTxt = data.toString();
      var roleRec = new GlideRecord('sys_user_has_role');
      roleRec.addEncodedQuery('role.sys_idIN' + dataTxt);
      roleRec.query();
      while (roleRec.next()) {
          list.push(roleRec.user.toString());
      }
      return list;
  },

  _getUserCriteriaCompany: function(data) {
      var list = [];
      var dataTxt = '';
      dataTxt = data.toString();
      var userRec = new GlideRecord('sys_user');
      userRec.addEncodedQuery('company.sys_idIN' + dataTxt);
      userRec.query();
      while (userRec.next()) {
          list.push(userRec.sys_id.toString());
      }
      return list;
  },

  _getUserCriteriaLocation: function(data) {
      var list = [];
      var dataTxt = '';
      dataTxt = data.toString();
      var userRec = new GlideRecord('sys_user');
      userRec.addEncodedQuery('location.sys_idIN' + dataTxt);
      userRec.query();
      while (userRec.next()) {
          list.push(userRec.sys_id.toString());
      }
      return list;
  },

  _getUserCriteriaDepartment: function(data) {
      var list = [];
      var dataTxt = '';
      dataTxt = data.toString();
      var userRec = new GlideRecord('sys_user');
      userRec.addEncodedQuery('department.sys_idIN' + dataTxt);
      userRec.query();
      while (userRec.next()) {
          list.push(userRec.sys_id.toString());
      }
      return list;
  },

  _errorThrow: function(msg, uc) {
      var errMsg = '';
      if (msg == 'match') {
          errMsg += 'User Criteria "' + uc + '" has Match all selected. Match all is out of scope due to complexity';
      }
      if (msg == 'advanced') {
          errMsg += 'User Criteria "' + uc + '" has Advanced selected. Advanced is out of scope due to complexity';
      }
      return errMsg;
  },

  type: 'UserCriteriaUtils'
};

Sys ID

7ed628ff1b026d103f42dd77bd4bcbab

Offical Documentation

Official Docs: