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);
 }