Script Include : GroupUtil

PHOTO EMBED

Thu Nov 07 2024 09:32:18 GMT+0000 (Coordinated Universal Time)

Saved by @amrit_v

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