You need to sign in to do that
Don't have an account?
How to assigned a record to a different user?I have a custom object Board__c and a custom field Assigned_To__c(lookup to users from other profiles).Assigned users see only those records which they are assigned.
How to assigned a record to a different user?
- I have a custom object Board__c
- and a custom field Assigned_To__c(lookup to users from other profiles).
- Assigned users see only those records which they are assigned.
- I will answer on this post after if I done it.
I have shared the answer as given below:
trigger shareCustomizedBoardTrigger on Customise_Board__c (after update) {
if(trigger.isAfter && trigger.isUpdate ){
CustomizedBoardTriggerHelper.AfterUpdateOperations(Trigger.New, trigger.oldMap);
}
}
========================================================================================
public class CustomizedBoardTriggerHelper {
public static void AfterUpdateOperations(List<Customise_Board__c> customizedboardList, Map<id, Customise_Board__c> oldMapCustomizedboard){
try{
List<Customise_Board__Share> lstBoardShare = new List<Customise_Board__Share>();
Set<Id> setCustomizedBoardIdsOnAssigned = new Set<Id>();
Set<Id> setRemovedAssingedUsers = new Set<Id>();
Set<Id> setCustomizedBoardIdsAfternRemovedAssignedUser = new Set<Id>();
for (Customise_Board__c ctb : customizedboardList){
if(ctb.Assigned_To__c != null && ctb.Assigned_To__c != oldMapCustomizedboard.get(ctb.id).Assigned_To__c){
setCustomizedBoardIdsOnAssigned.add(ctb.Id);
Customise_Board__Share cShare = new Customise_Board__Share();
cShare.ParentId = ctb.id;
system.debug('##lstBoardShareparendid=====>'+cShare.ParentId);
cShare.UserOrGroupId = ctb.Assigned_To__c;
system.debug('##SharewithId=====>'+cShare.UserOrGroupId);
cShare.AccessLevel ='Edit';
lstBoardShare.add(cShare);
system.debug('##addinlstBoardShare=====>'+lstBoardShare);
}
//If AssignedUser is removed from CustomizedBoard
if(ctb.Assigned_To__c != oldMapCustomizedboard.get(ctb.id).Assigned_To__c){
setRemovedAssingedUsers.add(oldMapCustomizedboard.get(ctb.id).Assigned_To__c);
system.debug('##setRemovedAssingedUsers=====>'+setRemovedAssingedUsers);
setCustomizedBoardIdsAfternRemovedAssignedUser.add(ctb.id);
system.debug('##setCustomizedBoardIdsAfternRemovedAssignedUser=====>'+setCustomizedBoardIdsAfternRemovedAssignedUser);
}
}
if(lstBoardShare !=null && lstBoardShare.size() > 0){
insert lstBoardShare;
system.debug('##insertlstBoardShare=====>'+lstBoardShare);
}
try{
if(setRemovedAssingedUsers!=null){
List<Customise_Board__Share> lstRemovedShare = new List<Customise_Board__Share>([Select id from Customise_Board__Share where UserOrGroupId IN : setRemovedAssingedUsers AND ParentId in : setCustomizedBoardIdsAfternRemovedAssignedUser]);
if(lstRemovedShare!=null && lstRemovedShare.size()>0) delete lstRemovedShare;
system.debug('##lstRemovedShare=====>'+lstRemovedShare);
}
}Catch(Exception e){
System.debug('Ex**** Share Del '+e.getMessage());
}
}Catch(Exception ex){
System.debug('Ex**** '+ex.getMessage());
}
}
}
All Answers
Hi Bhanoo,
Do you have any criteria to assign it to the other user?
If yes then you can use workflow/process builder/Assignment rule.
Regards,
Priya Ranjan
Please find the apex sharing link:
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_bulk_sharing_creating_with_apex.htm
Let us know if this works.
I have shared the answer as given below:
trigger shareCustomizedBoardTrigger on Customise_Board__c (after update) {
if(trigger.isAfter && trigger.isUpdate ){
CustomizedBoardTriggerHelper.AfterUpdateOperations(Trigger.New, trigger.oldMap);
}
}
========================================================================================
public class CustomizedBoardTriggerHelper {
public static void AfterUpdateOperations(List<Customise_Board__c> customizedboardList, Map<id, Customise_Board__c> oldMapCustomizedboard){
try{
List<Customise_Board__Share> lstBoardShare = new List<Customise_Board__Share>();
Set<Id> setCustomizedBoardIdsOnAssigned = new Set<Id>();
Set<Id> setRemovedAssingedUsers = new Set<Id>();
Set<Id> setCustomizedBoardIdsAfternRemovedAssignedUser = new Set<Id>();
for (Customise_Board__c ctb : customizedboardList){
if(ctb.Assigned_To__c != null && ctb.Assigned_To__c != oldMapCustomizedboard.get(ctb.id).Assigned_To__c){
setCustomizedBoardIdsOnAssigned.add(ctb.Id);
Customise_Board__Share cShare = new Customise_Board__Share();
cShare.ParentId = ctb.id;
system.debug('##lstBoardShareparendid=====>'+cShare.ParentId);
cShare.UserOrGroupId = ctb.Assigned_To__c;
system.debug('##SharewithId=====>'+cShare.UserOrGroupId);
cShare.AccessLevel ='Edit';
lstBoardShare.add(cShare);
system.debug('##addinlstBoardShare=====>'+lstBoardShare);
}
//If AssignedUser is removed from CustomizedBoard
if(ctb.Assigned_To__c != oldMapCustomizedboard.get(ctb.id).Assigned_To__c){
setRemovedAssingedUsers.add(oldMapCustomizedboard.get(ctb.id).Assigned_To__c);
system.debug('##setRemovedAssingedUsers=====>'+setRemovedAssingedUsers);
setCustomizedBoardIdsAfternRemovedAssignedUser.add(ctb.id);
system.debug('##setCustomizedBoardIdsAfternRemovedAssignedUser=====>'+setCustomizedBoardIdsAfternRemovedAssignedUser);
}
}
if(lstBoardShare !=null && lstBoardShare.size() > 0){
insert lstBoardShare;
system.debug('##insertlstBoardShare=====>'+lstBoardShare);
}
try{
if(setRemovedAssingedUsers!=null){
List<Customise_Board__Share> lstRemovedShare = new List<Customise_Board__Share>([Select id from Customise_Board__Share where UserOrGroupId IN : setRemovedAssingedUsers AND ParentId in : setCustomizedBoardIdsAfternRemovedAssignedUser]);
if(lstRemovedShare!=null && lstRemovedShare.size()>0) delete lstRemovedShare;
system.debug('##lstRemovedShare=====>'+lstRemovedShare);
}
}Catch(Exception e){
System.debug('Ex**** Share Del '+e.getMessage());
}
}Catch(Exception ex){
System.debug('Ex**** '+ex.getMessage());
}
}
}