Find My Salesforce Users by Role Hierarchy

This is a cool little script that finds "everyone who works beneath me in the role hierarchy". So you pass the utility class a User ID and it chugs through all of the level beneath that User in the role hierarchy and returns the IDs of all of the users in those roles. Comes in handy if you need to find all of the uses that report to a particular Sales Manager, for instance.

public with sharing class RoleUtils {
 
 public static Set<ID> getRoleSubordinateUsers(Id userId) {
  
  // get requested user's role
  Id roleId = [select UserRoleId from User where Id = :userId].UserRoleId;
  // get all of the roles underneath the user
  Set<Id> allSubRoleIds = getAllSubRoleIds(new Set<ID>{roleId});
  // get all of the ids for the users in those roles
  Map<Id,User> users = new Map<Id, User>([Select Id, Name From User where 
 UserRoleId IN :allSubRoleIds]);
  // return the ids as a set so you can do what you want with them
  return users.keySet();
  
 }
 
 private static Set<ID> getAllSubRoleIds(Set<ID> roleIds) {
  
  Set<ID> currentRoleIds = new Set<ID>();
  
  // get all of the roles underneath the passed roles
  for(UserRole userRole :[select Id from UserRole where ParentRoleId 
 IN :roleIds AND ParentRoleID != null])
  currentRoleIds.add(userRole.Id);
  
  // go fetch some more rolls!
  if(currentRoleIds.size() > 0)
 currentRoleIds.addAll(getAllSubRoleIds(currentRoleIds));

  return currentRoleIds;
  
 }

}