Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Filter List view with BR

Skydev22
Tera Contributor
Hello Community my something is wrong with my filter i am trying to filter HR profile depending on departement code comming from another table can someone tell what is wrong with the code 
 
(function executeRule(current, previous /*null when async*/ ) {
    var userId = gs.getUserID();
    // if (!userId) {
    //     return;
    // }

    // Retrieve department and company IDs from u_hr_scope_mgmt
    var scopeGR = new GlideRecord('u_hr_scope_mgmt');
    scopeGR.addQuery('u_user', userId);
    scopeGR.query();

    var departmentIds = [];
    var companyIds = [];

    while (scopeGR.next()) {
        // Extract department (u_services)
        if (!gs.nil(scopeGR.u_services)) {
            var deptList = scopeGR.u_services.toString().split(',');
            for (var i = 0; i < deptList.length; i++) {
                var deptId = deptList[i].trim();
                if (deptId && departmentIds.indexOf(deptId) === -1) {
                    departmentIds.push(deptId);
                }
            }
        }

        // Extract company (u_legal_entities)
        if (!gs.nil(scopeGR.u_legal_entities)) {
            var companyList = scopeGR.u_legal_entities.toString().split(',');
            for (var j = 0; j < companyList.length; j++) {
                var companyId = companyList[j].trim();
                if (companyId && companyIds.indexOf(companyId) === -1) {
                    companyIds.push(companyId);
                }
            }
        }
    }

    var joinDepartmentIds = departmentIds.join(", ");
    var joinCompanyIds = companyIds.join(", ");
    // Debugging logs
    gs.info("Department IDs: " + joinDepartmentIds);
    gs.info("Company IDs: " + joinCompanyIds);


    //Apply query filter to HR Profiles
    if (departmentIds.length > 0 || companyIds.length > 0) {
        // Apply department filter
        if (departmentIds.length > 0) {
            // current.addEncodedQuery('user.department=411be713c3ac5e107c1d06359901310b');
            var departmentArray = joinDepartmentIds.split(','); // Convert string to array
           
            // Loop through remaining department IDs and add OR condition
            for (var m = 1; m < departmentArray.length; m++) {
                gs.info("department array: " + departmentArray[m]);
                current.addQuery('user.department', departmentArray[0].trim()).addOrCondition('user.department', departmentArray[m].trim());
                gs.addInfoMessage( current.addQuery('user.department', departmentArray[0].trim()).addOrCondition('user.department', departmentArray[m].trim()))
            }
        }

        // Apply company filter
        // if (companyIds.length > 0) {
        //     current.addQuery('company.id', 'IN', joinCompanyIds);
        // }
    } else {
        // If the user has no department or company in scope, restrict access
        current.setAbortAction(true);
    }
   
})(current, previous);
1 REPLY 1

Skydev22
Tera Contributor

this is the part of the code not wich is not working 

    //Apply query filter to HR Profiles
    if (departmentIds.length > 0 || companyIds.length > 0) {
        // Apply department filter
        if (departmentIds.length > 0) {
            // current.addEncodedQuery('user.department=411be713c3ac5e107c1d06359901310b');
            var departmentArray = joinDepartmentIds.split(','); // Convert string to array
           
            // Loop through remaining department IDs and add OR condition
            for (var m = 1; m < departmentArray.length; m++) {
                gs.info("department array: " + departmentArray[m]);
                current.addQuery('user.department', departmentArray[0].trim()).addOrCondition('user.department', departmentArray[m].trim());
                gs.addInfoMessage( current.addQuery('user.department', departmentArray[0].trim()).addOrCondition('user.department', departmentArray[m].trim()))
            }
        }