work_request_repository = $work_request_repository; $this->calendar_sync_repository = $calendar_sync_repository; $this->schedule_sync_repository = $schedule_sync_repository; $this->preprocessor_requests = $preprocessor_requests; $this->tx_manager = $tx_manager; } /** * @param int $batch_size * @return int */ public function processActions($batch_size = PHP_INT_MAX) { return $this->tx_manager->transaction(function() use($batch_size){ $count = 0; $res = $this->work_request_repository->getUnprocessedAdminScheduleWorkRequestActionByPage ( new PagingInfo(1, $batch_size) ); foreach ($this->preprocessor_requests->preProcessActions($res->getItems()) as $request){ try { if (!$request instanceof AdminScheduleSummitActionSyncWorkRequest) continue; if($request instanceof AdminSummitEventActionSyncWorkRequest){ $page = 1; $summit_event_id = $request->getSummitEventId(); do{ $page_response = $this->schedule_sync_repository->getAllBySummitEvent($summit_event_id, new PagingInfo($page, 1000)); $has_more = count($page_response->getItems()) > 0; if(!$has_more) continue; foreach ($page_response->getItems() as $schedule_event){ if(!$schedule_event instanceof ScheduleCalendarSyncInfo) continue; $work_request = new MemberEventScheduleSummitActionSyncWorkRequest(); $work_request->setType($request->getType()); $work_request->setCalendarSyncInfo($schedule_event->getCalendarSyncInfo()); $work_request->setOwner($schedule_event->getMember()); $work_request->setSummitEventId($summit_event_id); $this->work_request_repository->add($work_request); } $page++; }while($has_more); } if($request instanceof AdminSummitLocationActionSyncWorkRequest){ $location_id = $request->getLocationId(); $page = 1; do{ $page_response = $this->schedule_sync_repository->getAllBySummitLocation($location_id, new PagingInfo($page, 1000)); $has_more = count($page_response->getItems()) > 0; if(!$has_more) continue; foreach ($page_response->getItems() as $schedule_event){ if(!$schedule_event instanceof ScheduleCalendarSyncInfo) continue; $work_request = new MemberEventScheduleSummitActionSyncWorkRequest(); // always is update no matter what $work_request->setType(AbstractCalendarSyncWorkRequest::TypeUpdate); $work_request->setCalendarSyncInfo($schedule_event->getCalendarSyncInfo()); $work_request->setOwner($schedule_event->getMember()); $work_request->setSummitEventId($schedule_event->getSummitEvent()->getId()); $this->work_request_repository->add($work_request); } $page++; }while($has_more); } $request->markProcessed(); $count++; } catch(DBALException $ex1){ echo 'DBALException !!'.PHP_EOL; Log::error($ex1); } catch(Exception $ex6){ echo 'Exception !!'.PHP_EOL; Log::error($ex6); } } return $count; }); } }