示例#1
0
 /**
  * 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);
 }