Exemplo n.º 1
0
 public function registerAction(Request $request, $id)
 {
     //Jos sivu on haettu POSTilla, on kyseessä ilmoittautumisen käsittely
     if ($request->getMethod() == 'POST') {
         $event = $this->getDoctrine()->getRepository('ProdekoIlmoBundle:Event')->findOneBy(array('id' => $id));
         //Luo uusi ilmoittautumisolio ja liitä sille kyseinen tapahtuma
         $registration = Helpers::createRegistrationObject($event);
         $form = $this->createForm(new RegistrationType($event), $registration);
         $form->bindRequest($request);
         /* Tarkasta lomake, isValid näyttää automaattisesti errorit, jos niitä on. 
          * TODO: tarkista, mistä request on tullut. Jos kyseessä on jonotus,
          * ohjaa sendConfirmationEmailin asemesta jononäkymään.
          */
         if ($form->isValid()) {
             //Lisää lomakkeelta tulleet tiedot registration-olioon
             $registration = $form->getData();
             $time = new \DateTime();
             $registration->setRegistrationTime($time);
             $token = Helpers::getRegistrationToken($registration);
             $registration->setToken($token);
             //Tallenna ilmoittautuminen tietokantaan
             $em = $this->getDoctrine()->getEntityManager();
             $em->persist($registration);
             $em->flush();
             //Lähetä vahvistusviesti
             //Jos ilmo ei ole auki, kyseessä on jonoon ilmoittautuminen
             return $this->forward('ProdekoIlmoBundle:Ilmo:sendConfirmationEmail', array('event' => $event, 'token' => $token, 'email' => $registration->getEmail()));
         } else {
             //return new Response(var_dump($form->getErrors()));
             $kiltis = false;
             if ($ip = $request->getClientIp() === $this->container->getParameter('kiltis_ip')) {
                 $kiltis = true;
             }
             return $this->render('ProdekoIlmoBundle:Ilmo:event.html.twig', array('form' => $form->createView(), 'id' => $id, 'event' => $event, 'kiltis' => $kiltis));
         }
     } else {
         return $this->redirect($this->generateUrl('show', array('id' => $id)));
     }
 }