/**
  * @Route(
  *      "/user/membership/{login}/events/edit/{id}",
  *      defaults={"_format"="json"},
  *      name="memberships_orga_events_ajax_edit",
  *      options={"expose"=true}
  * )
  * @Template()
  */
 public function ajaxEditAction(Request $request, $login, Event $event)
 {
     if (!$this->getUserLayer()->isUser()) {
         return $this->createAccessDeniedResponse();
     }
     /** @var $em EntityManager */
     $em = $this->getDoctrine()->getManager();
     /** @var $memberships Member[] */
     $memberships = $em->createQueryBuilder()->select('m, o')->from('EtuUserBundle:Member', 'm')->leftJoin('m.organization', 'o')->andWhere('m.user = :user')->setParameter('user', $this->getUser()->getId())->orderBy('m.role', 'DESC')->addOrderBy('o.name', 'ASC')->getQuery()->getResult();
     $membership = null;
     foreach ($memberships as $m) {
         if ($m->getOrganization()->getLogin() == $login) {
             $membership = $m;
             break;
         }
     }
     if (!$membership) {
         throw $this->createNotFoundException('Membership or organization not found for login ' . $login);
     }
     if (!$membership->hasPermission('events')) {
         return $this->createAccessDeniedResponse();
     }
     $orga = $membership->getOrganization();
     if ($event->getOrga()->getId() != $orga->getId()) {
         return $this->createAccessDeniedResponse();
     }
     $eventUpdate = $request->request->get('event');
     if (!$eventUpdate) {
         throw $this->createNotFoundException('No event patch provided');
     }
     $oldInterval = $event->getEnd()->diff($event->getBegin());
     if (isset($eventUpdate['allDay'])) {
         $event->setIsAllDay($eventUpdate['allDay'] == 'true');
         $oldInterval = \DateInterval::createFromDateString('1 second');
     }
     if (isset($eventUpdate['start'])) {
         $event->setBegin(\DateTime::createFromFormat('d-m-Y--H-i', $eventUpdate['start']));
         $end = \DateTime::createFromFormat('d-m-Y--H-i', $eventUpdate['start']);
         $end->add($oldInterval);
         $event->setEnd($end);
     }
     if (isset($eventUpdate['end'])) {
         $event->setEnd(\DateTime::createFromFormat('d-m-Y--H-i', $eventUpdate['end']));
     }
     $em->persist($event);
     $em->flush();
     return new Response(json_encode(array('status' => 'success')));
 }