/** * Creates new event in given calendar. * * @ApiDoc( * resource=true, * description="Creates new event in given calendar", * parameters={ * {"name"="title", "dataType"="string", "description"="event title", "required"=true}, * {"name"="startTime", "dataType"="timestamp", "description"="event start time", "required"=true}, * {"name"="endTime", "dataType"="timestamp", "description"="event end time", "required"=true}, * {"name"="description", "dataType"="string", "description"="event description", "required"=false}, * {"name"="location", "dataType"="string", "description"="event location", "required"=false} * }, * statusCodes={ * 200="Returned when successful", * 400="Returned on invalid request", * 404="Returned when room with given id does not exist" * } * ) */ public function postCalendarsEventAction($calendarId, Request $request) { $calendarIntegration = new CalendarIntergration(); // todo: check if calendar exists, else 404 $eventData = $this->retrieveEventData($request); $this->validateEventData($eventData); $event = new Event($eventData['title'], new \DateTime('@' . $eventData['startTime'], new \DateTimeZone('Europe/Warsaw')), new \DateTime('@' . $eventData['endTime'], new \DateTimeZone('Europe/Warsaw'))); if (!empty($eventData['description'])) { $event->setLocation($eventData['description']); } if (!empty($eventData['location'])) { $event->setLocation($eventData['location']); } try { $calendarIntegration->createEvent($calendarId, $event); } catch (\Exception $e) { throw new HttpException(500, $e->getMessage()); } $view = $this->view(null, 204); return $this->handleView($view); }
public function listCalendarEvents($calendarId) { $optParams = array('maxResults' => 10, 'orderBy' => 'startTime', 'singleEvents' => TRUE, 'timeMin' => date('c')); $results = $this->service->events->listEvents($calendarId, $optParams); $events = []; foreach ($results->getItems() as $event) { $apiEvent = new ApiEntity\Event($event->getSummary(), new \DateTime('@' . strtotime($event->start->dateTime), new \DateTimeZone('Europe/Warsaw')), new \DateTime('@' . strtotime($event->end->dateTime), new \DateTimeZone('Europe/Warsaw'))); $apiEvent->setId($event->getId()); $apiEvent->setCreatedTime(new \DateTime('@' . strtotime($event->created), new \DateTimeZone('Europe/Warsaw'))); $apiEvent->setDescription($event->description); $apiEvent->setLocation($event->location); $events[] = $apiEvent; } return $events; }