Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public with sharing class CampaignHandler {
- public static void manageEBCourse(List<Campaign> newList, Map<id, Campaign> oldMap)
- {
- Set<String> EBIDSet = new Set<String>();
- Map<String, Course__c> EBCourseMap = new Map<String, Course__c>();
- List<Course__c> courseList = new List<Course__c>();
- Map<String, Opportunity> oppMap = new Map<String, Opportunity>();
- List<Account> vtAccounts = [Select Id, Name from Account where Name = 'VitalTalk' limit 1];
- Account vtAccount = null;
- if (vtAccounts.isEmpty())
- {
- vtAccount = new Account();
- vtAccount.Name = 'VitalTalk';
- insert vtAccount;
- }
- else
- vtAccount = vtAccounts[0];
- if (vtAccount != null)
- {
- for (Campaign c : newList)
- {
- if (c.EventbriteSync__EventbriteId__c != null && (Trigger.isInsert || oldMap.get(c.Id).EventbriteSync__EventbriteId__c != c.EventbriteSync__EventbriteId__c || oldMap.get(c.Id).StartDate != c.StartDate || oldMap.get(c.Id).EndDate != c.EndDate))
- {
- EBIDSet.add(c.EventbriteSync__EventbriteId__c);
- }
- }
- if (!EBIDSet.isEmpty())
- {
- for (Course__c course : [Select Id, EventBrite_ID__c, Opportunity__c from Course__c where EventBrite_ID__c in :EBIDSet])
- {
- EBCourseMap.put(course.EventBrite_ID__c, course);
- }
- for (Campaign c : newList)
- {
- if (c.EventbriteSync__EventbriteId__c != null && (Trigger.isInsert || oldMap.get(c.Id).EventbriteSync__EventbriteId__c != c.EventbriteSync__EventbriteId__c || oldMap.get(c.Id).StartDate != c.StartDate || oldMap.get(c.Id).EndDate != c.EndDate))
- {
- Course__c existingCourse = EBCourseMap.get(c.EventbriteSync__EventbriteId__c);
- if (existingCourse == null)
- {
- Course__c course = new Course__c();
- course.Name = c.Name;
- course.EventBrite_ID__c = c.EventbriteSync__EventbriteId__c;
- course.Start_Date__c = c.StartDate;
- course.End_Date__c = c.EndDate;
- courseList.add(course);
- Opportunity o = new Opportunity();
- o.Name = c.Name;
- o.AccountId = vtAccount.Id;
- o.CloseDate = System.today();
- o.StageName = 'Closed Won';
- o.EventBrite_Event_ID__c = c.EventbriteSync__EventbriteId__c;
- oppMap.put(o.EventBrite_Event_ID__c, o);
- }
- else
- {
- System.debug('@@@Found course: ' + existingCourse);
- Course__c course = new Course__c();
- course.Id = existingCourse.Id;
- course.Name = c.Name;
- course.Start_Date__c = c.StartDate;
- course.End_Date__c = c.EndDate;
- courseList.add(course);
- if (existingCourse.Opportunity__c == null)
- {
- Opportunity o = new Opportunity();
- o.Name = c.Name;
- o.AccountId = vtAccount.Id;
- o.CloseDate = System.today();
- o.StageName = 'Closed Won';
- o.EventBrite_Event_ID__c = c.EventbriteSync__EventbriteId__c;
- oppMap.put(o.EventBrite_Event_ID__c, o);
- }
- }
- }
- }
- if (!oppMap.isEmpty())
- upsert oppMap.values();
- for (Course__c course : courseList)
- {
- Opportunity o = oppMap.get(course.EventBrite_ID__c);
- if (course != null && o != null)
- course.Opportunity__c = o.Id;
- }
- if (!courseList.isEmpty())
- upsert courseList;
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment