Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.68 KB | None | 0 0
  1. trigger CAP_AG_ProjectShare on CAP_AG_Project__c(after insert,after update) {
  2. Set<Group> allGroups = new Set<Group>();
  3. Set<ID> deleteProjectSharesIdSet = new Set<ID>();
  4. List<CAP_AG_Project__share> projectShares = New List<CAP_AG_Project__share>();
  5. List<CAP_AG_Project__share> deleteprojectShares = New List<CAP_AG_Project__share>();
  6. map<String,List<Id>> groupToProjectMembers = new map<String,List<Id>>();
  7. map<String,List<Id>> groupToProjectToDelete = new map<String,List<Id>>();
  8. LIST<ID> ownerIdsSet = new LIST<ID>();
  9.  
  10. for(CAP_AG_Project__c project: trigger.new){
  11. if(project.CAP_AG_Country__c != Null && project.CAP_AG_Private_Project__c != true){
  12. if(project.CAP_AG_Country__c.trim().length()>0){
  13. String cleanCountryName = project.CAP_AG_Country__c.trim().left(40);
  14. String namePrefixedCountryName = ('CTRY_' + cleanCountryName.replace('.','_').replace(' ','_').replace('-','').replace('(','').replace(')','').replace(''','').replace(',','').replace('__','_')).left(40);
  15. namePrefixedCountryName=namePrefixedCountryName.removeEnd('_');
  16. allGroups.add(new Group(DeveloperName=namePrefixedCountryName,Name=('Country - ' + cleanCountryName).left(40)));
  17. if(!groupToProjectMembers.containsKey(namePrefixedCountryName)){
  18. groupToProjectMembers.put(namePrefixedCountryName,new List<Id>());
  19. }
  20. groupToProjectMembers.get(namePrefixedCountryName).add(project.Id);
  21. }
  22. }
  23. if((Trigger.IsInsert && project.CAP_AG_Private_Project__c == true)
  24. || (Trigger.IsUpdate && project.CAP_AG_Private_Project__c == true)
  25. || (Trigger.IsUpdate && !(trigger.oldmap).isEmpty() && trigger.oldmap.get(project.id) != null && trigger.oldmap.get(project.id).CAP_AG_Country__c != null &&
  26. trigger.oldmap.get(project.id).CAP_AG_Country__c != project.CAP_AG_Country__c)
  27. )
  28. {
  29. ownerIdsSet.add(project.OwnerId);
  30. deleteProjectSharesIdSet.add(project.id);
  31. }
  32. }
  33.  
  34. for(CAP_AG_Project__share projShare: [Select id,UserOrGroupID,ParentId,AccessLevel from CAP_AG_Project__share where ParentId IN: deleteProjectSharesIdSet and UserOrGroupID NOT IN :ownerIdsSet and RowCause = 'Manual'])
  35. {
  36. deleteProjectShares.add(projShare);
  37. }
  38. if(!deleteProjectShares.isEmpty())
  39. {
  40. database.delete(deleteProjectShares);
  41. }
  42.  
  43. ***database.upsert(new List<Group>(allGroups),Schema.Group.Name);***
  44. for(Group g:allGroups){
  45. if(groupToProjectMembers.containsKey(g.DeveloperName)){
  46. For(Id projectId : groupToProjectMembers.get(g.DeveloperName)){
  47. projectShares.add(new CAP_AG_Project__share(UserOrGroupID=g.id, ParentId=projectId,AccessLevel='Read'));
  48. }
  49. }
  50. }
  51. database.insert(projectShares);
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement