public function sendConfirmationEmailAction($email, $token, Event $event, Request $request) { $messageBody = "Ilmoittautumisesi tapahtumaan " . $event->getName() . " on tallennettu.\n" . "Voit poistaa ilmoittautumisesi allaolevasta linkistä.\n" . "http://ilmo.prodeko.org/fi/remove/" . $token; $message = \Swift_Message::newInstance()->setSubject($event->getName() . ' / Ilmoittautuminen tallennettu')->setFrom('*****@*****.**')->setTo($email)->setBody($messageBody); $this->get('mailer')->send($message); //TODO: näytä jonkinlainen viesti "ilmoittautuminen onnistui" return $this->redirect($this->generateUrl('show', array('id' => $event->getId()))); }
public function createEventFormAction($id, Request $request) { if ($id != 0) { $event = $this->getDoctrine()->getRepository('ProdekoIlmoBundle:Event')->findOneBy(array('id' => $id)); if ($event) { $registrations = $event->getRegistrations(); if ($registrations && count($registrations) > 0) { $state = self::STATE_OLD_EVENT_REGISTRANTS; // Sellaisen tapahtuman muokkaus, jolla on ilmoittautumisia. } else { $state = self::STATE_OLD_EVENT_NO_REGISTRANTS; // Muokkaus, ei ilmoittautumisia. } } else { throw $this->createNotFoundException('Tapahtumaa ei löydy'); //echo "Ei löydy tapahtumaa!"; die; //TODO: Tähän ehkä joku exception handling } } else { $state = self::STATE_NEW_EVENT; // Uuden tapahtuman luonti. $event = new Event(); /* $quota_names = array('I','II','III','IV','N'); for($i=1;$i<=5;$i++) { $quota = new Quota(); $quota->setYearOfStudiesValue($i); $quota->setName($quota_names[$i-1]); $quota->setEvent($event); $event->addQuota($quota); }*/ $now = new \DateTime('today midnight'); $event->setTakesPlace($now); $event->setRegistrationStarts($now); $event->setRegistrationEnds($now); $event->setKiltisilmo(true); $event->setSizeOfOpenQuota(0); } //Tee ilmoittautumislomake, määrittely löytyy Prodeko\IlmoBundle\Form\Type\EventType $form = $this->createForm(new EventType(), $event); //Jos kyseessä on lomakkeen käsittely, eikä lomakkeen näyttö if ($request->getMethod() == 'POST') { $em = $this->getDoctrine()->getEntityManager(); if ($state == self::STATE_OLD_EVENT_REGISTRANTS) { // Eli jos muokataan tapahtumaa, jossa on ilmoittautumisia $originalTextFields = array(); $originalMcFields = array(); // Tallenna alkuperäiset kentät ennen kuin formista tuleet tiedot luetaan event-muuttujaan foreach ($event->getFreeTextFields() as $field) { $originalTextFields[] = $field; } foreach ($event->getMultipleChoiceFields() as $field) { $originalMcFields[] = $field; } } $form->bindRequest($request); if ($form->isValid()) { if ($state == self::STATE_OLD_EVENT_NO_REGISTRANTS) { $originalEvent = $this->getDoctrine()->getRepository('ProdekoIlmoBundle:Event')->findOneBy(array('id' => $event->getId())); foreach ($originalEvent->getQuotas() as $oldquota) { $em->remove($oldquota); $em->flush(); } } $event = $form->getData(); if ($state == self::STATE_OLD_EVENT_REGISTRANTS) { /* Kenttien lisäyksen ja poiston käsittely Tämä on relevanttia vain jos muokataan tapahtumaa, jolla on ilmoittautumisia. */ // Käytä helperseissä määriteltyä funktiota määrittämään lisätyt ja poistetut kentät. list($newTextFields, $deletedTextFields) = Helpers::filterFields($originalTextFields, $event->getFreeTextFields()); list($newMcFields, $deletedMcFields) = Helpers::filterFields($originalMcFields, $event->getMultipleChoiceFields()); // Lisää jokaiselle uudelle kentälle ilmoitukset kaikkiin olemassaoleviin ilmoittautumisiin, että kenttää ei ole täytetty. $em = Helpers::addDummyValues(array_merge($newTextFields, $newMcFields), $registrations, $em, "Ei täytetty"); // Poista kaikkien poistuneiden fieldien entryt (ei poista fieldejä, koska fieldien kierrätys $em = Helpers::deleteEntries(array_merge($deletedMcFields, $deletedTextFields), $registrations, $em); } foreach ($event->getQuotas() as $quota) { $quota->setEvent($event); } //Tallenna tapahtuma $em->persist($event); $em->flush(); //Ohjaa tarkastelemaan luotua tapahtumaa return $this->redirect($this->generateUrl("show", array('id' => $event->getId()))); } else { return $this->render('ProdekoIlmoBundle:Ilmo:createEvent.html.twig', array('form' => $form->createView(), 'id' => $id, 'event' => $event)); } } return $this->render('ProdekoIlmoBundle:Ilmo:createEvent.html.twig', array('form' => $form->createView(), 'id' => $id, 'event' => $event)); }