queue_manager = $queue_manager; $this->work_request_repository = $work_request_repository; } /** * @param AbstractCalendarSyncWorkRequest $request * @return AbstractCalendarSyncWorkRequest|null */ public function process(AbstractCalendarSyncWorkRequest $request) { if(!$request instanceof MemberEventScheduleSummitActionSyncWorkRequest) return null; $summit_event = $request->getSummitEvent(); $calendar_sync_info = $request->getCalendarSyncInfo(); // check if there is a former add, disregard and omit $pending_requests = $this->queue_manager->getSummitEventRequestFor($calendar_sync_info->getId(), $summit_event->getId()); if(count($pending_requests) > 0 ) { foreach ($pending_requests as $pending_request) { if($request->getType() == AbstractCalendarSyncWorkRequest::TypeUpdate) { $this->queue_manager->registerRequestForDelete($request); continue; } if($this->queue_manager->removeRequest($pending_request)) $this->work_request_repository->delete($pending_request); } // if the event is not already synchronized disregard delete if(!$request->getOwner()->isEventSynchronized($calendar_sync_info, $summit_event)) { $this->work_request_repository->delete($request); return null; } } return $request; } }