Example #1
0
 /**
  * Change la date de début d'un evt et
  * - vérifie la cohérence des évènements fils
  * - vérifie la cohérence du statut
  * 
  * @param \Application\Entity\Event $event            
  * @param \DateTime $startdate            
  * @param
  *            array Messages
  * @return true Si tout s'est bien passé
  */
 private function changeStartDate(Event $event, \DateTime $startdate, &$messages = null)
 {
     $objectManager = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager');
     $formatter = \IntlDateFormatter::create(\Locale::getDefault(), \IntlDateFormatter::FULL, \IntlDateFormatter::FULL, 'UTC', \IntlDateFormatter::GREGORIAN, 'dd LLL, HH:mm');
     if ($event->setStartdate($startdate)) {
         if (is_array($messages)) {
             $messages['success'][] = "Date et heure de début modifiées au " . $formatter->format($event->getStartdate());
         }
         // passage au statut confirmé si pertinent, droits ok et heure de début proche de l'heure actuelle
         if ($this->isGranted('events.confirme')) {
             $now = new \DateTime('now');
             $now->setTimezone(new \DateTimeZone('UTC'));
             $status = $objectManager->getRepository('Application\\Entity\\Status')->findOneBy(array('open' => true, 'defaut' => false));
             if ($event->getStatus()->getId() == 1 && ($event->getStartDate()->format('U') - $now->format('U')) / 60 < 15) {
                 $event->setStatus($status);
                 if (is_array($messages)) {
                     $messages['success'][] = "Evènement passé au statut : confirmé.";
                 }
             }
         }
         // changement de l'heure de début des évènements fils si pertinent
         foreach ($event->getChildren() as $child) {
             if ($child->getCategory() instanceof FrequencyCategory) {
                 $child->setStartdate($startdate);
                 $objectManager->persist($child);
             }
         }
         $event->updateAlarms();
         $objectManager->persist($event);
     } else {
         if (is_array($messages)) {
             $messages['error'][] = "Impossible de changer l'heure de début.";
         }
     }
 }