I need to Fetch caller/user's manager and manager's manager and so on till top level until the last manager whose manager should be empty
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-25-2021 05:38 AM
Hi Leads,
i had a requirement below, please help on this.
- caller creates a incident.
- Background process (a rule or client script) looks at caller's manager ànd manager’s manager so on … till top level until the last manager whose manager should be empty.
- But using below script i can able to loop till third level, is any feature in snow restricting my function, or my script is wrong please help.
Client Script:
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
var callerID = g_form.getValue('caller_id');
var si =new GlideAjax('getCallerID');
si.addParam('sysparm_name','getUserInfo');
si.addParam('sysparm_caller_id',callerID);
//si.getXML(getManager);
si.getXML(getUserInfo);
//function getManager(response){
function getUserInfo(response){
var manager = response.responseXML.documentElement.getAttribute('answer');
alert("Manager Name: "+ manager);
}
}
Script Include :
var getCallerID = Class.create();
getCallerID.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getUserInfo: function() {
var userID = this.getParameter('sysparm_caller_id');
var gr = new GlideRecord('sys_user');
gr.addQuery('sys_id',userID);
gr.query();
gr.next();
if(gr.manager!=''){
//while(gr.next()!=''){
for (i = 0; i < gr.next(); i++)
{
manager = gr.manager.getRefRecord().getDisplayValue('manager');
}
// var i= 0;
// do{
// //if(i<1){
// if(gr.manager()!=''){
// manager = gr.manager.getRefRecord().getDisplayValue('manager');
// return manager;
// }
// i++;
// }while(i<5);
return manager;
}
},
type: 'getCallerID'
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-25-2021 06:36 AM
Can you try with minor change:
var getCallerID = Class.create();
getCallerID.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getUserInfo: function () {
var userID = this.getParameter('sysparm_caller_id');
var manager = '';
var topManager = '';
var gr = new GlideRecord('sys_user');
gr.addQuery('sys_id', userID);
gr.query();
while (gr.next()) {
manager = checkManager(userID);
while(manager != topManager){
manager = getManager(manager);
if(manager){
topManager = manager;
}
}
return topManager;
}
},
checkManager: function (user) {
var gr = new GlideRecord('sys_user');
gr.get(user)
if(gr.manager){
return gr.manager.getDisplayValue();
}
else{
return '';
}
},
type: 'getCallerID'
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-25-2021 06:43 AM
Sorry, it is also not working, as giving return null value.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-25-2021 06:49 AM
Oh made an error. Will update my previous reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-25-2021 06:51 AM
Hi Bhanu,
I have updated the script in the first reply, can you try it?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-25-2021 06:58 AM
Hi Willem,
Sorry, it is also not working, as giving return null value, is any mistake from my end?, please let me know
thanks