Advertisement
Guest User

Untitled

a guest
Sep 2nd, 2015
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.40 KB | None | 0 0
  1. Id queueId = [SELECT Id FROM Group WHERE Name = 'Channel Sales Managers' AND Type = 'Queue' LIMIT 1].id;
  2. Id currentProfileId = userinfo.getProfileId();
  3. List<Profile> profileName = [SELECT Name FROM Profile WHERE ID = :currentProfileId LIMIT 1];
  4.  
  5. for(Integer i = 0; i < Trigger.New.size(); i++){
  6. if(profileName[0].Name == 'Partner Portal User' || profileName[0].Name == 'Partner Manager' ||
  7. profileName[0].Name == 'Partner Community User') {
  8. Trigger.new[i].OwnerId = queueId;
  9. Trigger.new[i].Status = 'Channel Submitted';
  10. }
  11. }
  12. }
  13. if(Trigger.isInsert && Trigger.isAfter) {
  14.  
  15. List<LeadShare> sharesToInsert = new List<LeadShare>();
  16.  
  17. Id currentProfileId = userinfo.getProfileId();
  18. List<Profile> profileName = [SELECT Name FROM Profile WHERE ID = :currentProfileId LIMIT 1];
  19.  
  20. List<Lead> toUpdate = new List<Lead>();
  21. toUpdate = [SELECT Id, CreatedById, Partner__c FROM Lead WHERE Id IN :Trigger.New];
  22. List<Lead> newLeads = new List<Lead>();
  23.  
  24. for(Integer i = 0; i < Trigger.New.size(); i++){
  25.  
  26. if(profileName[0].Name == 'Partner Portal User' || profileName[0].Name == 'Partner Manager' ||
  27. profileName[0].Name == 'Partner Community User') {
  28.  
  29. LeadShare leadShare = new LeadShare();
  30. leadShare.LeadId = Trigger.new[i].Id;
  31. leadShare.UserOrGroupId = Trigger.new[i].CreatedById;
  32. leadShare.LeadAccessLevel = 'Read';
  33. sharesToInsert.add(leadShare);
  34.  
  35. }
  36. }
  37.  
  38. insert sharesToInsert;
  39.  
  40. for(Lead l : toUpdate) {
  41. if(l.Partner__c == null) {
  42. l.Partner__c = l.CreatedById;
  43. newLeads.add(l);
  44. }
  45. }
  46. update newLeads;
  47.  
  48. }
  49.  
  50.  
  51. if(Trigger.isUpdate) {
  52. //When a lead status is updated to "Channel Registered," this will
  53. //update the status on the corresponding Campaign Member record
  54.  
  55. List<Lead> updatedLeads = new List<Lead>();
  56. Map<Id, CampaignMember> members = new Map<Id, CampaignMember>([SELECT Id, LeadId, CampaignId FROM CampaignMember WHERE LeadId IN :Trigger.New]);
  57. List<CampaignMember> membersToUpdate = new List<CampaignMember>();
  58. Map<Id, CampaignMember> leadIds = new Map<Id, CampaignMember>();
  59.  
  60. List<String> companies = new List<String>();
  61. List<String> domains = new List<String>();
  62. String nameToMatch1;
  63. String nameToMatch2;
  64. List<Lead> sameCompanyLeads = new List<Lead>();
  65. List<Lead> newLeadsToUpdate = new List<Lead>();
  66.  
  67. for(Lead thisLead : Trigger.New) {
  68. Lead oldLead = Trigger.oldMap.get(thisLead.Id);
  69.  
  70. Boolean oldLeadIsRegistered = oldLead.Status.equals('Channel Registered');
  71. Boolean newLeadIsRegistered = thisLead.Status.equals('Channel Registered');
  72.  
  73. if(!oldLeadIsRegistered && newLeadIsRegistered) {
  74. updatedLeads.add(thisLead);
  75.  
  76. nameToMatch1 = thisLead.Company;
  77.  
  78. if (nameToMatch1 != null) {
  79. nameToMatch1 = nameToMatch1.remove(',');
  80. nameToMatch1 = nameToMatch1.remove('.');
  81. nameToMatch1 = nameToMatch1.remove('Inc');
  82. nameToMatch1 = nameToMatch1.remove('LLC');
  83. nameToMatch1 = nameToMatch1.remove('Credit Union');
  84. nameToMatch1 = nameToMatch1.remove('Company');
  85. nameToMatch1 = nameToMatch1.remove('/');
  86. nameToMatch1 = nameToMatch1.remove('&');
  87. nameToMatch1 = nameToMatch1.remove(''');
  88. nameToMatch1 = nameToMatch1.replaceAll('[\s]', '%');
  89.  
  90. if (!nameToMatch1.endsWith('%')) {
  91. nameToMatch1 += '%';
  92. }
  93.  
  94. }
  95.  
  96. nameToMatch2 = nameToMatch1.remove('Corp');
  97. nameToMatch2 = nameToMatch2.remove('FCU');
  98. nameToMatch2 = nameToMatch2.remove('CU');
  99.  
  100. companies.add(nameToMatch1);
  101. companies.add(nameToMatch2);
  102.  
  103. if(thisLead.Email_Domain__c != 'yahoo.com' && thisLead.Email_Domain__c != 'gmail.com' &&
  104. thisLead.Email_Domain__c != 'hotmail.com' && thisLead.Email_Domain__c != 'zoho.com' &&
  105. thisLead.Email_Domain__c != 'outlook.com') {
  106. domains.add(thisLead.Email_Domain__c);
  107. }
  108. }
  109. }
  110.  
  111. //If we find another lead in the Channel Submitted status with the same email domain OR the same company,
  112. //we update the status as Channel Registered
  113. sameCompanyLeads = [SELECT Id, Email_Domain__c, Company, Status FROM Lead WHERE Owner.Name = 'Channel Sales Managers' AND Status IN('Channel Submitted') AND Id NOT IN :updatedLeads AND (Email_Domain__c IN :domains OR Company IN :companies)];
  114.  
  115. //AND (Email_Domain__c IN :domains OR Company IN :companies)
  116. for(Lead thisLead : sameCompanyLeads) {
  117. thisLead.Status = 'Channel Registered (Affiliated)';
  118. newLeadsToUpdate.add(thisLead);
  119. }
  120.  
  121. for(CampaignMember thisCM : members.values()) {
  122. CampaignMember thisMember = members.get(thisCM.Id);
  123. leadIds.put(thisCM.LeadId, thisMember);
  124. }
  125.  
  126. for(Lead thisLead : updatedLeads) {
  127. if(leadIds.containsKey(thisLead.Id)) {
  128. CampaignMember thisMember = leadIds.get(thisLead.Id);
  129. thisMember.Status = 'Channel Registered';
  130. membersToUpdate.add(thisMember);
  131. }
  132. }
  133.  
  134. try {
  135. Database.update( membersToUpdate );
  136. Database.update( newLeadsToUpdate );
  137. } catch(DmlException e) {
  138. System.debug('The following exception has occurred: ' + e.getMessage());
  139. }
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement