Skip to content

Instantly share code, notes, and snippets.

@francisbrero
Last active December 6, 2017 19:22
Show Gist options
  • Save francisbrero/ee7454fc05282534130346c0de02822e to your computer and use it in GitHub Desktop.
Save francisbrero/ee7454fc05282534130346c0de02822e to your computer and use it in GitHub Desktop.
trigger newTask on CampaignMember (after insert, after update) {
Set<String> leadIds = new Set<String>();
Set<String> campaignIds = new Set<String>();
for(CampaignMember cm : Trigger.new) {
if(cm.LeadId!=null) leadIds.add(cm.LeadId);
campaignIds.add(cm.CampaignId);
}
Map<String, Lead> leadMap = new Map<String, Lead>();
for(Lead l : [Select Id
From Lead
Where Id IN :leadIds]) {
leadMap.put(l.Id, l);
}
Map<String, Campaign> campMap = new Map<String, Campaign>();
for(Campaign c : [Select Id, Type, Name, Parent.name from Campaign where Id IN:campaignIds]) {
campMap.put(c.Id, c);
}
List<Task> tasksToInsert = new List<Task>();
for(CampaignMember cm : Trigger.new) {
if(cm.LeadId!=null) {
Lead l = leadMap.get(cm.LeadId);
Campaign cmp = campMap.get(cm.CampaignId);
String campaignInfoString = cmp.type + '-' + cmp.name + '-' + l.Status;
Task t = new Task();
t.OwnerId = UserInfo.getUserId();
t.Subject = campaignInfoString;
t.Status = 'Completed';
t.Priority = 'Normal';
t.WhatId = l.Id;
tasksToInsert.add(t);
}
}
insert tasksToInsert;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment