...
So now that I have two sets of users, I really want to do set logic on it, and subtract the results of the financial_group_members.do list from the sys_user_has_role_list.do results.
This is pretty close; I'm wondering if I can do exactly that using a script. Going to try. First, need to track down both scripts.not certain why it is that I'm getting math that doesn't quite add up.
Code Block |
---|
function findItil() {
var user_array = [];
var role_id = []
var user_has_role = new GlideAggregate('sys_user_has_role');
user_has_role.addEncodedQuery('role=b4c1f5331011100094adb14c071ff154^user.active!=false^user.emailISNOTEMPTY^user.user_nameISNOTEMPTY');
user_has_role.addAggregate('COUNT', 'user');
user_has_role.query();
while (user_has_role.next()) {
user_array.push(user_has_role.user.user_name);
}
return user_array;
}
function findFinancialMembersWithNoOtherRole() {
var user_array = [];
var user_in_group = new GlideRecord('sys_user_grmember');
user_in_group.addQuery('group', '4da8813ea1a8990494ad46651315d87d'); //Financial Approvers group
user_in_group.query();
while (user_in_group.next()) {
var group_count = new GlideAggregate('sys_user_grmember');
group_count.addQuery('user', user_in_group.user.sys_id);
group_count.addAggregate('COUNT');
group_count.query();
var groups = 0;
if (group_count.next()) {
groups = group_count.getAggregate('COUNT');
if (groups == 1) {
user_array.push(user_in_group.user.user_name);
}
}
}
return user_array;
}
function arr_diff(a1, a2)
{
var a=[], diff=[];
for(var i=0;i<a1.length;i++)
a[a1[i]]=true;
for(var i=0;i<a2.length;i++)
if(a[a2[i]]) delete a[a2[i]];
else a[a2[i]]=true;
for(var k in a)
diff.push(k);
return diff;
}
function findItilMinusFinancialMembersWithNoOtherRole () {
var itil_users = findItil();
var finance_no_role_users = findFinancialMembersWithNoOtherRole();
gs.print("The length of itil users is: " + itil_users.length);
gs.print("The length of finance approvers with no other role is: " + finance_no_role_users.length);
var result = arr_diff(itil_users,finance_no_role_users);
gs.print("The subtracted set of elements is: " + result.length);
}
findItilMinusFinancialMembersWithNoOtherRole(); |