Need assistance with Business Rule

Chella_sundar26
Tera Contributor

We have a business rule that governs the visibility of the case to the users. Currently , it makes the case visible only to users with ITIL access . But additionally, want to make the case visible to users when they have opened the case even if they don't have any role in the system by amending the below 'else if' query .

else if (!gs.hasrole('itil') {

 

var query = u_catalog_item.ref_sc_cat_item_producer.u_can_read_requested_by=true^u_requested_by.employee_number='+getPersonnelNumber+'^NQu_catalog_item.ref_sc_cat_item_producer.u_can_read_requested_for=true^u_requested_for.employee_number='+getPersonnelNumber+'^NQu_catalog_itemISEMPTY^u_requested_by.employee_number='+getPersonnelNumber;
var currentQuery = current.getEncodedQuery();

if(currentQuery) {
query = query.replace(/\^NQ/g, '^' + currentQuery+ '^NQ');
query = query + '^' + currentQuery;
  }

 

current.addEncodedQuery(query);

4 REPLIES 4

Vishal Birajdar
Giga Sage

Hi @Chella_sundar26 

 

Can you try logic below :

 

if ( gs.hasrole('itil')) {
           var query = "Query for ITL users";
           current.addEncodedQuery(query);
} else if (!gs.hasrole('itil')){
           var query = "Query for Non ITL users";
           current.addEncodedQuery(query);
}


 

 

 

Vishal Birajdar
ServiceNow Developer

I know one thing, and that is that I know nothing.
- Socrates

Hi Vishal, thanks for your inputs.. But removing the existing 'Else if' will remove other logic that is already implemented .

Hi @Chella_sundar26 

 

I guess, you don't require to remove existing else-if. 

If possible can you show the full line of code...??

 

 

 

 

Vishal Birajdar
ServiceNow Developer

I know one thing, and that is that I know nothing.
- Socrates

var loggedInUserSYSID = gs.getUserID();
  var user = new GlideRecord('sys_user');
  user.get(loggedInUserSYSID);
  var getPersonnelNumber = user.employee_number;


  /*ITIL users should be able to see their cases raised against their groups*/
  if(gs.hasRole("ITIL") && (!gs.hasRole("admin"))){
    var agent_query = "u_workgroupLIKE";
    var new_query = "";
    var allMyWorkgroup = new global.WBUUtils().getAllMyWorkroups(gs.getUserID());
    var au = new global.ArrayUtil();
        allMyWorkgroup = au.unique(allMyWorkgroup);
    if(allMyWorkgroup.length>0){
      for(var i =0;i<allMyWorkgroup.length; i++){
        new_query +=  agent_query+allMyWorkgroup[i] + '^OR';
      }
    }
    new_query = new_query.substring(0,new_query.length-3);


    }

  else if (!gs.hasRole('itil')) { 

  var query =   u_catalog_item.ref_sc_cat_item_producer.u_can_read_requested_by=true^u_requested_by.employee_number='+getPersonnelNumber+'^NQu_catalog_item.ref_sc_c  at_item_producer.u_can_read_requested_for=true^u_requested_for.employee_number='+getPersonnelNumber+'^NQu_catalog_itemISEMPTY^u_requested_by.employe  e_number='+getPersonnelNumber;
  var currentQuery = current.getEncodedQuery();

 

  if(currentQuery) {
  query = query.replace(/\^NQ/g, '^' + currentQuery+ '^NQ');
  query = query + '^' + currentQuery;
  }