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()))
            }
        }