function call
var sCurrentGroupMembers = new <script_include>().getGroupMembers(group_sysid);
gs.print('sCurrentGroupMembers:' +sCurrentGroupMembers );
var oGroupMembers = JSON.parse(sCurrentGroupMembers);
gs.print(JSON.stringify(oGroupMembers.users));
oNewGroupMember = JSON.parse(group_members);
var oGroupConfig = getGroupDeltas(oGroupMembers.users, oNewGroupMember);
gs.print(JSON.stringify(oGroupConfig.remove));
gs.print(JSON.stringify(oGroupConfig.add))
output:
*** Script: sCurrentGroupMembers:
{"manager":"3b2649efdb0f8c10cc0652f3f39xxxxx",
"email":"",
"type":"33a2226edb99c340edfc7cbdae96xxxx",
"description":"Created for xyz",
"users":[{"user":"3b2649efdb0f8c10cc0652f3f396xxxx"},{"user":"856a8f71db3d73041b4ffc45ae96196a"},{"user":"375277131b8e589c6e6a535c2e4bxxxx"}],
"name":"a test group",
"cost_center":"c5a3034ddb28e494f397127b4b96xxxx"}
=====
*** Script: [{"user":"3b2649efdb0f8c10cc0652f3f396xxxx"},{"user":"856a8f71db3d73041b4ffc45ae96xxxx"},{"user":"375277131b8e589c6e6a535c2e4bxxxx"}]
=====
*** Script: ["856a8f71db3d73041b4ffc45ae96196a"]
*** Script: ["8806f579db7d2b407c15d811ce96191e"]
function
getGroupMembers: function(sGroupID){
sGroupID = this.getParameter ("sysparm_group") || sGroupID || "";
if (sGroupID == "")
return; //Do nothing
var grGroupGlideRecord = new GlideRecord("sys_user_group"),
oResult = {"manager":"",
"email":"",
"provider":"",
"type":"",
"description":"",
"users":[]};
if (!grGroupGlideRecord.get(sGroupID))
return;
oResult.name = grGroupGlideRecord.getValue("name") || "";
oResult.manager = grGroupGlideRecord.getValue("manager") || "";
oResult.email = grGroupGlideRecord.getValue("email") || "";
oResult.type = grGroupGlideRecord.getValue("type") || "";
oResult.description = grGroupGlideRecord.getValue("description") || "";
oResult.cost_center = grGroupGlideRecord.getValue("cost_center") || "";
var grMembersGlideRecord = new GlideRecord("sys_user_grmember");
grMembersGlideRecord.addEncodedQuery ("user.active=true^group=" + sGroupID);
grMembersGlideRecord.orderBy("user.last_name");
grMembersGlideRecord.query();
while (grMembersGlideRecord.next()){
oResult.users.push ({"user":grMembersGlideRecord.getValue("user")});
}
return JSON.stringify(oResult);
},
getGroupDeltas = function(oOriginal,oNew){
var oResult = "";
Array.prototype.diff = function(a) {
return this.filter(function(i) {
return a.indexOf(i) < 0;
});
};
Array.prototype.toFlatArray = function(){
var obj = this;
return Object.keys(obj).map(function (key) {
return obj[key].user;
});
};
//flatten both arrays (containing objects)
var aOrig = oOriginal.toFlatArray(),
aNew = oNew.toFlatArray();
oResult = {"remove": aOrig.diff(aNew), "add": aNew.diff(aOrig)};
return oResult;
};
Comments
Post a Comment