/** {@inheritDoc} */ public function export() { $parentExport = parent::export(); $export = []; foreach ($parentExport as $property => $value) { if (!isset($this->changedProperties[$property]) || true !== $this->changedProperties[$property]) { continue; } $export[$property] = $value; } return $export; }
private function requestEvents($url, array $params = []) { $request = $this->guzzle->createRequest('GET', $url, $params); $response = $this->guzzle->send($request); if (200 > $response->getStatusCode() || 300 <= $response->getStatusCode()) { throw new ApiErrorException($response); } $result = $response->json(); $list = new ArrayCollection(); foreach ($result['value'] as $item) { $list[$item['Id']] = Event::hydrate($item); } return $list; }
/** {@inheritDoc} */ public function persist(AbstractEvent $event, array $options = []) { if (!$event instanceof Event) { throw new InvalidArgumentException('Wrong event provided, expected an office event'); } $params = ['headers' => ['Content-Type' => 'application/json'], 'body' => json_encode($event->export())]; $method = 'POST'; $url = sprintf('calendars/%s/events', $event->getCalendar()->getId()); if (null !== $event->getId()) { $method = 'PATCH'; $url = sprintf('%s/%s', $url, $event->getId()); } $request = $this->guzzle->createRequest($method, $url, $params); $response = $this->guzzle->send($request); $this->handleResponse($response); return Event::hydrate($response->json()); }