Script include Changes

Rajesh Bandila
Tera Contributor

Hi,

 

I have an script include to make it UI Action visibile on RITM table, if logged in user is member of the RITM associated SC_Task assignment group members. Please find the below script and it's working as expected. 

 

Now, I have an around 35 assignment groups which name starts with "360". I want to make it UI action visible if user is member of any one of the 35 assignment groups.

 

Make it UI action visible, if logged in user is member of the RITM associated SC_Task assignment group members OR users who is part of the 360 groups. Could you please help me on this? Thanks


Script Include:

var CheckUserGroup = Class.create();
CheckUserGroup.prototype = {
    initialize: function() {
    },

    isUserInRitmGroup: function(ritmGr) {
        var ritmId = ritmGr.getUniqueValue();

        // Add a query to check if the "Required Action" checkbox is true
        var ritm = new GlideRecord('sc_req_item');
        ritm.get(ritmId);
        if (ritm.u_requires_action == false) {
            //g_form.setDisplay('u_requires_action', false);
            return false;
        }

        var taskGr = new GlideRecord("sc_task");
        taskGr.addQuery('parent', ritmId);
        taskGr.query();

        while (taskGr.next()) {
            var userId = gs.getUserID();
            //var groupId = taskGr.assignment_group.getDisplayValue();

            var groupId = taskGr.getValue("assignment_group");


            var groupMemberGr = new GlideRecord('sys_user_grmember');
            groupMemberGr.addQuery('user', userId);
            groupMemberGr.addQuery('group', groupId);
            groupMemberGr.query();

            if (groupMemberGr.next()) {
                return true;
            }
        }

        return false;
    },

    type: 'CheckUserGroup'
};
1 ACCEPTED SOLUTION

HrishabhKumar
Kilo Sage

Hi @Rajesh Bandila ,

Try this updated script:

var CheckUserGroup = Class.create();
CheckUserGroup.prototype = {
    initialize: function() {
    },
 
    isUserInRitmGroup: function(ritmGr) {
        var ritmId = ritmGr.getUniqueValue();
 
        var ritm = new GlideRecord('sc_req_item');
        if (!ritm.get(ritmId) || !ritm.u_requires_action) {
            return false;
        }
 
        var taskGr = new GlideRecord("sc_task");
        taskGr.addQuery('parent', ritmId);
        taskGr.query();
 
        var userId = gs.getUserID();
while (taskGr.next()) {
            var groupId = taskGr.getValue("assignment_group");
            var groupMemberGr = new GlideRecord('sys_user_grmember');
            groupMemberGr.addQuery('user', userId);
            groupMemberGr.addQuery('group', groupId);
            groupMemberGr.query();
if (groupMemberGr.next()) {
                return true;
            }
        }
 
        // Check if the user is in any group that starts with "360"
        var groupGr = new GlideRecord('sys_user_grmember');
        groupGr.addQuery('user', userId);
        groupGr.query();
while (groupGr.next()) {
            var group = new GlideRecord('sys_user_group');
if (group.get(groupGr.group) && group.name.startsWith('360')) {
                return true;
            }
        }
 
        return false;
    },
 
    type: 'CheckUserGroup'
};

 

Thanks.

Hope this helps.

If my response turns useful please mark it helpful and accept solution.

View solution in original post

2 REPLIES 2

Mark Manders
Mega Patron

Does this work:

var CheckUserGroup = Class.create();
CheckUserGroup.prototype = {
    initialize: function() {
    },

    isUserInRitmGroup: function(ritmGr) {
        var ritmId = ritmGr.getUniqueValue();

        // Add a query to check if the "Required Action" checkbox is true
        var ritm = new GlideRecord('sc_req_item');
        ritm.get(ritmId);
        if (ritm.u_requires_action == false) {
            //g_form.setDisplay('u_requires_action', false);
            return false;
        }

        var taskGr = new GlideRecord("sc_task");
        taskGr.addQuery('parent', ritmId);
        taskGr.query();

        while (taskGr.next()) {
            var userId = gs.getUserID();
            //var groupId = taskGr.assignment_group.getDisplayValue();

            var groupId = taskGr.getValue("assignment_group");


            var groupMemberGr = new GlideRecord('sys_user_grmember');
            groupMemberGr.addQuery('user', userId);
            var groupCondition = groupMemberGr.addQuery('group', groupId);
            groupCondition.addOrCondition('group.name', 'STARTSWITH', '360');
            groupMemberGr.query();

            if (groupMemberGr.next()) {
            return true;
             }
        }

        return false;
    },

    type: 'CheckUserGroup'
};

Please mark any helpful or correct solutions as such. That helps others find their solutions.
Mark

HrishabhKumar
Kilo Sage

Hi @Rajesh Bandila ,

Try this updated script:

var CheckUserGroup = Class.create();
CheckUserGroup.prototype = {
    initialize: function() {
    },
 
    isUserInRitmGroup: function(ritmGr) {
        var ritmId = ritmGr.getUniqueValue();
 
        var ritm = new GlideRecord('sc_req_item');
        if (!ritm.get(ritmId) || !ritm.u_requires_action) {
            return false;
        }
 
        var taskGr = new GlideRecord("sc_task");
        taskGr.addQuery('parent', ritmId);
        taskGr.query();
 
        var userId = gs.getUserID();
while (taskGr.next()) {
            var groupId = taskGr.getValue("assignment_group");
            var groupMemberGr = new GlideRecord('sys_user_grmember');
            groupMemberGr.addQuery('user', userId);
            groupMemberGr.addQuery('group', groupId);
            groupMemberGr.query();
if (groupMemberGr.next()) {
                return true;
            }
        }
 
        // Check if the user is in any group that starts with "360"
        var groupGr = new GlideRecord('sys_user_grmember');
        groupGr.addQuery('user', userId);
        groupGr.query();
while (groupGr.next()) {
            var group = new GlideRecord('sys_user_group');
if (group.get(groupGr.group) && group.name.startsWith('360')) {
                return true;
            }
        }
 
        return false;
    },
 
    type: 'CheckUserGroup'
};

 

Thanks.

Hope this helps.

If my response turns useful please mark it helpful and accept solution.