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