Esempio n. 1
0
 /**
  *
  * @param \Application\Entity\Event $event            
  * @param \DateTime $enddate            
  * @param type $messages            
  */
 private function changeEndDate(Event $event, $enddate, &$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->setEnddate($enddate)) {
         if ($enddate) {
             if (is_array($messages)) {
                 $messages['success'][] = "Date et heure de fin modifiées au " . $formatter->format($event->getEnddate());
             }
         } else {
             if (is_array($messages)) {
                 $messages['success'][] = "Date et heure de fin supprimées.";
             }
         }
         $now = new \DateTime('now');
         $now->setTimezone(new \DateTimeZone('UTC'));
         foreach ($event->getChildren() as $child) {
             if ($child->getCategory() instanceof FrequencyCategory) {
                 $child->setEnddate($enddate);
                 $objectManager->persist($child);
             }
         }
         $event->updateAlarms();
         // passage au statut terminé si
         // - evt confirmé ou (evt nouveau et heure de début passée)
         // et
         // - heure de fin proche de l'heure de début (15min)
         if ($this->isGranted('events.confirme') && $event->getEnddate()) {
             $status = $objectManager->getRepository('Application\\Entity\\Status')->findOneBy(array('open' => false, 'defaut' => true));
             if (($event->getStatus()->getId() == 2 || $event->getStatus()->getId() <= 2 && $event->getStartDate() < $now) && ($event->getEndDate()->format('U') - $now->format('U')) / 60 < 15) {
                 $event->setStatus($status);
                 // on ferme l'evt proprement
                 $this->closeEvent($event);
                 if (is_array($messages)) {
                     $messages['success'][] = "Evènement passé au statut : \"Fin confirmée\".";
                 }
             }
         }
         $objectManager->persist($event);
     } else {
         if (is_array($messages)) {
             $messages['error'][] = "Impossible de changer la date de fin.";
         }
     }
 }