- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-19-2022 05:43 PM
Hi,
I am trying to confirm when a user selects a group of users with a list collector it calls a script include to check if the user requested is in the group selected. Currently I have this working for a single user, but when multiple users are added it doesn't return the correct result.
I also would like remove the user that is currently in the group out of the list.
Any assistance is greatly appreciated.
Catalog client script:
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
//Checks the users in the selected group.
{
var group = g_form.getValue('add_select_the_group');
var user = 'select_users';
var selectedusers = g_form.getValue(user).split(',');
var ga = new GlideAjax('LookupUserGroups');
ga.addParam('sysparm_name', 'getUserGroups');
ga.addParam('sysparm_user_id', selectedusers);
ga.addParam('sysparm_group_id', group);
ga.getXML(ajaxcall);
}
function ajaxcall(response) {
var answer = response.responseXML.documentElement.getAttribute('answer');
alert(answer);
alert('The requested user is currently a member of the selected group.');
}
}
Script Includes:
var LookupUserGroups = Class.create();
LookupUserGroups.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getUserGroups: function() {
var user_id = this.getParameter('sysparm_user_id');
var pagroup = this.getParameter('sysparm_group_id');
var groups_ids = '';
var gr = new GlideRecord('sys_user_grmember');
gr.addQuery('user', user_id);
gr.addQuery('group', pagroup);
gr.query();
if (gr.next()) {
return true;
} else {
return false;
}
},
type: 'LookupUserGroups'
});
Solved! Go to Solution.
- Labels:
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-20-2022 02:38 AM
Hi,
1) you will have to determine which one is the latest value by comparing oldValue and newValue
2) newValue will hold 1 sysId extra than oldValue
use this -> to check for all users at once
var LookupUserGroups = Class.create();
LookupUserGroups.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getUserGroups: function() {
var user_id = this.getParameter('sysparm_user_id');
var pagroup = this.getParameter('sysparm_group_id');
var userCount = user_id.split(',').length;
var gr = new GlideRecord('sys_user_grmember');
gr.addQuery('user', 'IN', user_id);
gr.addQuery('group', pagroup);
gr.query();
var foundCount = gr.getRowCount();
if(userCount == foundCount)
return true; // it means all users are part of group selected
else
return false; // it means any 1 user is not part of group selected
},
type: 'LookupUserGroups'
});
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-20-2022 02:35 AM
Hi,
So what should happen if any 1 user doesn't belong to the group selected?
Regards
ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-20-2022 02:38 AM
Hi,
1) you will have to determine which one is the latest value by comparing oldValue and newValue
2) newValue will hold 1 sysId extra than oldValue
use this -> to check for all users at once
var LookupUserGroups = Class.create();
LookupUserGroups.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getUserGroups: function() {
var user_id = this.getParameter('sysparm_user_id');
var pagroup = this.getParameter('sysparm_group_id');
var userCount = user_id.split(',').length;
var gr = new GlideRecord('sys_user_grmember');
gr.addQuery('user', 'IN', user_id);
gr.addQuery('group', pagroup);
gr.query();
var foundCount = gr.getRowCount();
if(userCount == foundCount)
return true; // it means all users are part of group selected
else
return false; // it means any 1 user is not part of group selected
},
type: 'LookupUserGroups'
});
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader