var GroupUtil = Class.create();
GroupUtil.prototype = Object.extendsObject(AbstractAjaxProcessor, {
//To check unique name of group
isGroupNameUnique: function() {
var g_name = this.getParameter('sysparam_gname');
var grname = new GlideRecord('sys_user_group');
grname.addQuery('name', g_name);
grname.query();
if (grname.next())
return true;
},
//Update Support Group auto populate details
GroupAutoPopulateDetails: function() {
var result = this.newItem("result");
var group_name = this.getParameter('sysparm_group');
var grname = group_name.toString();
var gr_detail = new GlideRecord('sys_user_group');
gr_detail.addQuery('sys_id', grname);
gr_detail.query();
if (gr_detail.next()) {
return gr_detail.name + ';' + gr_detail.description + ';' + gr_detail.parent + ';' + gr_detail.manager + ';' + gr_detail.u_manager_backup + ';' + gr_detail.type + ';' + gr_detail.email + ';' + gr_detail.u_notifications_when_tickets_assigned + ';' + gr_detail.u_is_on_call + ';' + gr_detail.u_on_call_phone_no + ';' + gr_detail.u_hours_when_on_call + ';' + gr_detail.u_day_when_on_call + ';' + gr_detail.u_region + ';' + gr_detail.u_is_support_group + ';' + gr_detail.u_phone_number + ';' + gr_detail.u_phone_no_justification;
}
},
//get members from group auto populate;
GetMembersFromGroup: function(grp) {
var group_id = this.getParameter('sysparm_grp');
var member = [];
var gp = grp;
var grUser = new GlideRecord('sys_user_grmember');
grUser.addQuery('group', group_id);
grUser.query();
while (grUser.next()) {
member.push(grUser.getValue('user').toString());
}
return member.join(',');
},
//Update SG Supported CI Auto Populate
ToGetSupportedCI: function() {
var group_id = this.getParameter('sysparm_grp');
var CI = [];
var grUser = new GlideRecord('cmdb_ci');
grUser.addQuery('managed_by_group', group_id);
grUser.query();
while (grUser.next()) {
CI.push(grUser.getValue('sys_id').toString());
}
return CI.join(',');
},
//get row count
GetRowCount: function() {
var group_id = this.getParameter('sysparm_grp');
var grtask = new GlideAggregate('task');
grtask.addQuery('assignment_group', group_id);
grtask.addQuery('active', true);
grtask.addAggregate('COUNT');
grtask.query();
var task = 0;
if (grtask.next()) {
task = grtask.getAggregate('COUNT');
gs.log('Active task count: ' + task);
}
return task;
},
//To Check user membership and Primary group
checkprimarygroup: function() {
var groupID = this.getParameter('sysparm_gp');
var usrID = gs.getUserID(); //Get current user ID
var returnval = 0;
var groupGr = new GlideRecord('sys_user_group');
if (groupGr.get(groupID)) {
var isSupportGroup = groupGr.u_is_support_group;
}
if (isSupportGroup) {
var grmember = new GlideRecord('sys_user_grmember');
grmember.addQuery('group', groupID);
grmember.addQuery('user', usrID);
grmember.query();
gs.log('Test99 ' + grmember.getRowCount());
if (grmember.getRowCount() > 0) {
returnval = 6; //not mem not primary
} else {
gs.log('Test100');
var user = GlideRecord('sys_user');
user.addQuery('sys_id', usrID);
user.query();
if (user.next())
if (user.u_primary_group == groupID) {
returnval = 1; //meber and primary
} else {
returnval = 2; //member but not primary
}
}
return returnval;
} else {
var grm = new GlideRecord('sys_user_grmember');
grm.addQuery('group', groupID);
grm.addQuery('user', usrID);
grm.query();
gs.log('group12');
if (grm.getRowCount() > 0) {
returnval = 5; //not mem not primary
} else {
var usr = GlideRecord('sys_user');
usr.addQuery('sys_id', usrID);
usr.query();
if (usr.next())
if (usr.u_primary_group == groupID) {
returnval = 3; //meber and primary
} else {
returnval = 4; //member but not primary
}
}
return returnval;
}
},
//users Current Groups Auto Populate in variable set
getusersGroup: function() {
var uID = this.getParameter('sysparm_gp');
var supportgroup = 0;
var grmember = new GlideRecord('sys_user_grmember');
grmember.addQuery('user', uID);
grmember.addQuery('group.active', true);
grmember.addQuery('group.u_is_support_group', true);
grmember.query();
var groupArray = [];
var groupJSON = {};
while (grmember.next()) {
var primarygroup = grmember.user.u_primary_group.getDisplayValue();
var isprimarygroup = false;
if (primarygroup == grmember.getDisplayValue('group'))
isprimarygroup = true;
var groupGr = new GlideRecord('sys_user_group');
groupGr.addQuery('sys_id', grmember.group.sys_id);
groupGr.query();
while (groupGr.next()) {
if (groupGr.u_is_support_group == true) {
supportgroup = true;
} else {
supportgroup = false;
}
groupJSON.relationship = {
issupport: supportgroup ? 'Yes' : 'No',
group: grmember.getDisplayValue('group'),
isprimary: isprimarygroup ? 'Yes' : 'No'
},
groupArray.push(groupJSON.relationship);
}
}
return JSON.stringify(groupArray);
},
//Remove Normal groups that user is already member and Remove Primary Group from group list Manage my subscription catalog
removenormalgroups: function() {
var userId = gs.getUserID();
var excludeIds = [];
var userGr = new GlideRecord('sys_user');
userGr.get(gs.getUserID());
var primaryGroup = userGr.u_primary_group.toString();
var grtype = new GlideRecord('sys_user_group');
grtype.addEncodedQuery('u_is_support_group=false^ORactive=false');
grtype.query();
while (grtype.next()) {
excludeIds.push(grtype.sys_id.toString());
}
var memberGr = new GlideRecord('sys_user_grmember');
memberGr.addQuery('user', userId);
memberGr.addQuery('group.u_is_support_group', false);
memberGr.query();
while (memberGr.next()) {
excludeIds.push(memberGr.getValue('group'));
}
excludeIds.push(primaryGroup);
return 'sys_id NOT IN' + excludeIds;
},
type: 'GroupUtil'
});
Client Script : Populate group members
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
g_form.clearValue('new_group_members');
g_form.clearValue('old_group_members');
return;
}
var group_name = g_form.getValue('select_support_group');
var grmember = new GlideAjax('GroupUtil');
grmember.addParam('sysparm_name','GetMembersFromGroup');
grmember.addParam('sysparm_grp',group_name);
grmember.getXML(ajaxResponse);
function ajaxResponse(response){
var resp = (response.responseXML.documentElement.getAttribute('answer'));
resp = resp.toString();
g_form.setValue('new_group_members', resp);
g_form.setValue('old_group_members', resp);
}
}