function cancel($slug, Request $request, Application $app) { if (!$this->build($slug, $request, $app)) { $app->abort(404, "Event does not exist."); } if ($this->parameters['event']->getIsDeleted()) { die("No"); // TODO } if ($this->parameters['event']->getIsCancelled()) { die("No"); // TODO } if ($this->parameters['event']->getIsImported()) { die("No"); // TODO } $form = $app['form.factory']->create(new EventCancelForm($app)); if ('POST' == $request->getMethod()) { $form->bind($request); if ($form->isValid()) { $eventEditMetaData = new EventEditMetaDataModel(); $eventEditMetaData->setUserAccount($app['currentUser']); if ($form->has('edit_comment')) { $eventEditMetaData->setEditComment($form->get('edit_comment')->getData()); } $eventEditMetaData->setFromRequest($request); $eventRepository = new EventRepository(); $eventRepository->cancelWithMetaData($this->parameters['event'], $eventEditMetaData); $repo = new EventRecurSetRepository(); if ($repo->isEventInSetWithNotDeletedFutureEvents($this->parameters['event'])) { return $app->redirect("/event/" . $this->parameters['event']->getSlugForUrl() . '/edit/future'); } else { return $app->redirect("/event/" . $this->parameters['event']->getSlugForUrl()); } } } $this->parameters['form'] = $form->createView(); return $app['twig']->render('site/event/cancel.html.twig', $this->parameters); }