/** * 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 createEvent($calendarId, ApiEntity\Event $event) { $googleEvent = new \Google_Service_Calendar_Event(array('summary' => $event->getTitle(), 'location' => $event->getLocation(), 'description' => $event->getDescription(), 'start' => array('dateTime' => $event->getStartTime()->format(\DateTime::ISO8601), 'timeZone' => 'Europe/Warsaw'), 'end' => array('dateTime' => $event->getEndTime()->format(\DateTime::ISO8601), 'timeZone' => 'Europe/Warsaw'), 'recurrence' => array('RRULE:FREQ=DAILY;COUNT=1'), 'attendees' => array(array('email' => $calendarId)), 'reminders' => array('useDefault' => FALSE, 'overrides' => array(array('method' => 'popup', 'minutes' => 10))))); $this->service->events->insert('primary', $googleEvent); }