work_request_repository = $work_request_repository; $this->calendar_sync_repository = $calendar_sync_repository; } /** * @param ICalendarSyncWorkRequestQueueManager $queue_manager * @param AbstractCalendarSyncWorkRequest $request * @return ICalendarSyncWorkRequestPreProcessorStrategy|null */ public function build(ICalendarSyncWorkRequestQueueManager $queue_manager, AbstractCalendarSyncWorkRequest $request){ if($request instanceof MemberEventScheduleSummitActionSyncWorkRequest) { switch ($request->getType()) { case AbstractCalendarSyncWorkRequest::TypeRemove: return new MemberEventScheduleSummitActionSyncWorkRequestDeleteStrategy($queue_manager, $this->work_request_repository); case AbstractCalendarSyncWorkRequest::TypeAdd: return new MemberEventScheduleSummitActionSyncWorkRequestAddStrategy($queue_manager, $this->work_request_repository); case AbstractCalendarSyncWorkRequest::TypeUpdate: return new MemberEventScheduleSummitActionSyncWorkRequestUpdateStrategy($queue_manager, $this->work_request_repository); } } if($request instanceof MemberCalendarScheduleSummitActionSyncWorkRequest){ switch ($request->getType()) { case AbstractCalendarSyncWorkRequest::TypeRemove: return new MemberCalendarScheduleSummitActionSyncWorkRequestDeleteStrategy ( $queue_manager, $this->work_request_repository, $this->calendar_sync_repository ); case AbstractCalendarSyncWorkRequest::TypeAdd: return new MemberCalendarScheduleSummitActionSyncWorkRequestAddStrategy(); } } if($request instanceof AdminSummitEventActionSyncWorkRequest){ switch ($request->getType()) { case AbstractCalendarSyncWorkRequest::TypeRemove: return new AdminSummitEventActionSyncWorkRequestDeleteStrategy( $queue_manager, $this->work_request_repository ); case AbstractCalendarSyncWorkRequest::TypeUpdate: return new AdminSummitEventActionSyncWorkRequestUpdateStrategy( $queue_manager, $this->work_request_repository ); } } if($request instanceof AdminSummitLocationActionSyncWorkRequest){ switch ($request->getType()) { case AbstractCalendarSyncWorkRequest::TypeRemove: return new AdminSummitLocationActionSyncWorkRequestDeleteStrategy( $queue_manager, $this->work_request_repository ); case AbstractCalendarSyncWorkRequest::TypeUpdate: return new AdminSummitLocationActionSyncWorkRequestUpdateStrategy( $queue_manager, $this->work_request_repository ); } } return null; } }