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); } }