How to check Recipient's manager AND Submitter's manager is member of a Group

Mahidhar_1995
Tera Contributor

I have a requirement,

If Recipient.manager = member of SNOW approval group [Approval - AD Tier 0 Account]
--OR--
If Recipient = member of SNOW approval group [Approval - AD Tier 0 Account] THEN show Tier 0 - Domain Admin Choice in the drop down

If submitter.manager = member of SNOW approval group [Approval - AD Tier 0 Account] show Tier 0 - Domain Admin Choice in the dropdown

 

I have created 2 client script :

OnLoad

function onLoad() {
    //Type appropriate comment here, and begin script below
   
    var ga = new GlideAjax('AnthemCatalogAjaxGetReferenceUtils');
    ga.addParam('sysparm_name', 'assing');
    ga.addParam('sysparm_group', '2c14bbc687cb79107c0742e4dabb3505');
    ga.getXML(memberOfAssignee);

    function memberOfAssignee(response) {
        var ans = response.responseXML.documentElement.getAttribute('answer');
        if (ans == 'true') {
        g_form.clearOptions('tier');
        g_form.addOption('tier', '', '--None--');
        g_form.addOption('tier', 'Tier 0 - Domain Admin', 'Tier 0 - Domain Admin', '1');
        g_form.addOption('tier', 'Tier 1 - Server Admin', 'Tier 1 - Server Admin', '2');
        g_form.addOption('tier', 'Tier 2 - PC/Workstation Admin', 'Tier 2 - PC/Workstation Admin', '3');
    } else if (ans == 'false') {
        g_form.clearOptions('tier');
        g_form.addOption('tier', '', '--None--');
        //g_form.addOption('tier', 'Tier 0 - Domain Admin', 'Tier 0 - Domain Admin', '1');
        g_form.addOption('tier', 'Tier 1 - Server Admin', 'Tier 1 - Server Admin', '2');
        g_form.addOption('tier', 'Tier 2 - PC/Workstation Admin', 'Tier 2 - PC/Workstation Admin', '3');
    }

}
}
OnChange on Recipient :
function onChange(control, oldValue, newValue, isLoading) {
   if (isLoading) {
      return;
   }

   var man = g_form.getReference('recipient', user);
   function user(userMan){

    var obj = new GlideAjax('AnthemCatalogAjaxGetReferenceUtils');
    obj.addParam('sysparm_name', 'checkMembership');
    obj.addParam('sysparm_user', newValue);
    obj.addParam('sysparm_userMan', userMan.manager);
    obj.getXMLAnswer(membershipCheck);
}

function membershipCheck(response) {
    //var answer = response;
    if (response == 'true') {
        g_form.clearOptions('tier');
        g_form.clearValue('tier');
        g_form.addOption('tier', '', '--None--');
        g_form.addOption('tier', 'Tier 0 - Domain Admin', 'Tier 0 - Domain Admin', '1');
        g_form.addOption('tier', 'Tier 1 - Server Admin', 'Tier 1 - Server Admin', '2');
        g_form.addOption('tier', 'Tier 2 - PC/Workstation Admin', 'Tier 2 - PC/Workstation Admin', '3');
    } else{
        g_form.clearOptions('tier');
        g_form.clearValue('tier');
        g_form.addOption('tier', '', '--None--');
        //g_form.addOption('tier', 'Tier 0 - Domain Admin', 'Tier 0 - Domain Admin', '1');
        g_form.addOption('tier', 'Tier 1 - Server Admin', 'Tier 1 - Server Admin', '2');
        g_form.addOption('tier', 'Tier 2 - PC/Workstation Admin', 'Tier 2 - PC/Workstation Admin', '3');
    }

}}
 
Script Include : Functions :
assing: function() {
        var g = this.getParameter('sysparm_group');
        if (gs.getUser().getUserByID(gs.getUser().getManagerID()).isMemberOf(g)) {
            return true;
        } else {
            return false;
        }
    },
    checkMembership: function() {
        var userId = this.getParameter('sysparm_user');
        var manID = this.getParameter('sysparm_userMan');
        var groupId = '2c14bbc687cb79107c0742e4dabb3505';

        // Query to check user membership//
        var membershipQuery = new GlideRecord('sys_user_grmember');
        membershipQuery.addQuery('group', groupId);
        membershipQuery.addEncodedQuery('user=' + userId + '^ORuser=' + manID);
        membershipQuery.query();
        // Check if user is a member of the group
        if (membershipQuery.next()) {
            return true;
        } else {
            return false;
        }
    },
 
BUT the question here is, If the submitter manager trying to submit a request and if He changed the recipient and that recipient is not member of the Group, We have to show the value Tier 0 - Domain Admin choice in the dropdown, I think due to the onchange client script on recipeint it is checking the recipinet value since the recipient is not part of the group it is hiding the value, but submitter is manager of the group is here, So we have to check Both recipient manager AND submitter manager should be part of the group before showing the value, if matches then show otherwise we have to hide the value in onchange script, Please let me know how we can check ?
 
0 REPLIES 0