You need to sign in to do that
Don't have an account?
Sunil Kumar 81
Trigger to validate user role.
I want to create a trigger which will validate the user role. Which means if role of new user is equals to its manager's role and new user's role id and its manager's roleid don't have a parent child relationship then it will show an exception. If any one hv success in same plz help..
Try this below snippet hope this helps.
trigger DontCreateUserRoleBelowManagerRole on User(before insert){
Map<Id,Id> RoleIDParentID=new Map<Id,Id>();
Map<Id,Id> managerIDRoleID=new Map<Id,Id>();
for(UserRole a:[select id,parentRoleID from UserRole]){
if(a.parentRoleID!=null){
RoleIDParentID.put(a.id,a.parentRoleID);
}
}
for(User a:[select id,UserRoleId from user]){
managerIDRoleID.put(a.id,a.UserRoleID);
}
if(Trigger.IsBefore&&Trigger.IsInsert){
for(User a:Trigger.new){
if(a.UserRoleID==managerIDRoleID.get(a.ManagerId)){
a.addError('Manger Role and User role cant be same');
}
if(RoleIDParentID.get(a.UserRoleID)!=managerIDRoleID.get(a.managerId)){
a.addError('User Role should be below Manager role');
}
}
}
}
All Answers
If
New User Role = Manager Role
Manager Role has no Child Roles
throw exception?
Try this below snippet hope this helps.
trigger DontCreateUserRoleBelowManagerRole on User(before insert){
Map<Id,Id> RoleIDParentID=new Map<Id,Id>();
Map<Id,Id> managerIDRoleID=new Map<Id,Id>();
for(UserRole a:[select id,parentRoleID from UserRole]){
if(a.parentRoleID!=null){
RoleIDParentID.put(a.id,a.parentRoleID);
}
}
for(User a:[select id,UserRoleId from user]){
managerIDRoleID.put(a.id,a.UserRoleID);
}
if(Trigger.IsBefore&&Trigger.IsInsert){
for(User a:Trigger.new){
if(a.UserRoleID==managerIDRoleID.get(a.ManagerId)){
a.addError('Manger Role and User role cant be same');
}
if(RoleIDParentID.get(a.UserRoleID)!=managerIDRoleID.get(a.managerId)){
a.addError('User Role should be below Manager role');
}
}
}
}
P.S. If this answers you question, please mark it as "Best Answer" so it will help other community members too.
Thanks,
Gokul