I'm attempting to rollup some Activity data to Campaign Members from a Trigger event. I've already worked through my trigger/filtering logic and now I have a list of affected campaign members:
List<CampaignMember> campaign_members = CampaignUtils.listCampaignMembersByWhoId(whoId_list); /* 1 SOQL */
As well as a list of Recent Activities per Lead/Contact (which is the WhoId
):
List<ActivityHistory> recent_activities = CampaignUtils.fetchRecentActivityForCampaginMembers(campaign_members,true);
*Example Instance: 20+ activities are updated, between 3 Leads/Contacts, producing 6 Campaign Members affected =
List<CampaignMember> campaign_members
, as well as 3 recent activities, (1 per Who [ContactId/LeadId]) =List<ActivityHistory> recent_activities
So with these 2 list I need to merge or update the campaign_members
fields with data in the recent_activities
. For example:
campaign_members.F2F_Activity_Date__c = recent_activities.ActivityDate
BUT, this is based on matching WhoId
(s). I'm thinking I need a loop of some sort but not sure how to say, for each campaign_members
find the matching recent_activity
, and then add that activity data to this member.
Thanks in advance for any help!
EDIT: My current attempt looks something like this
for (CampaignMember member : campaign_members) {
for(ActivityHistory act : recent_activities){
if (act.WhoId == member.LeadId || act.WhoId == member.ContactId) {
campaign_members.get(**THIS MEMBER**).F2F_Activity_ID__c = act.Id;
campaign_members.get(member).custom_field__c = act.value;
}
}
}
update campaign_members;