getSummitEventId(); } if($request instanceof AdminSummitLocationActionSyncWorkRequest){ $location_id = $request->getLocation()->getId(); } return $this->generateKey($request->getType(), $event_id, $location_id); } /** * @param string $type * @param int $event_id * @param int $location_id * @return string */ private function generateKey($type, $event_id = null, $location_id = null){ $sub_type = !is_null($event_id) ? AdminSummitEventActionSyncWorkRequest::SubType : AdminSummitLocationActionSyncWorkRequest::SubType; $id = !is_null($event_id) ? $event_id : $location_id; $key = "{$sub_type}_{$type}_{$id}"; return $key; } /** * @param AbstractCalendarSyncWorkRequest $request * @return bool */ public function registerRequest(AbstractCalendarSyncWorkRequest $request){ $key = $this->getKey($request); if(isset($this->registered_requests[$key])) return false; $this->registered_requests[$key] = $request; return true; } /** * @param AbstractCalendarSyncWorkRequest $request * @return bool */ public function removeRequest(AbstractCalendarSyncWorkRequest $request){ $key = $this->getKey($request); if(isset($this->registered_requests[$key])){ unset($this->registered_requests[$key]); return true; } return false; } /** * @param int $event_id * @param string $type * @return AdminSummitEventActionSyncWorkRequest[] */ public function getSummitEventRequestFor($event_id, $type = null){ $types = [ AbstractCalendarSyncWorkRequest::TypeAdd, AbstractCalendarSyncWorkRequest::TypeRemove, AbstractCalendarSyncWorkRequest::TypeUpdate, ]; if(!empty($type)) $types = [$type]; $list = []; foreach ($types as $t){ $key = $this->generateKey($t, $event_id); if(isset($this->registered_requests[$key])){ $list[] = $this->registered_requests[$key]; } } return $list; } /** * @param int $location_id * @param string $type * @return AdminSummitLocationActionSyncWorkRequest[] */ public function getSummitLocationRequestFor($location_id, $type = null){ $types = [ AbstractCalendarSyncWorkRequest::TypeAdd, AbstractCalendarSyncWorkRequest::TypeRemove, AbstractCalendarSyncWorkRequest::TypeUpdate, ]; if(!empty($type)) $types = [$type]; $list = []; foreach ($types as $t){ $key = $this->generateKey($t, null, $location_id); if(isset($this->registered_requests[$key])){ $list[] = $this->registered_requests[$key]; } } return $list; } /** * @return array */ public function getPurgedRequests(){ return array_values($this->registered_requests); } /** * @param AbstractCalendarSyncWorkRequest $request * @return bool */ public function registerRequestForDelete(AbstractCalendarSyncWorkRequest $request) { // TODO: Implement registerRequestForDelete() method. } /** * @return array */ public function getRequestsToDelete() { // TODO: Implement getRequestsToDelete() method. } }