Example #1
0
 public function load(ObjectManager $manager)
 {
     $recurrence = $this->getReference("recurrence");
     $category = $this->getReference("category");
     $event = new Event();
     $event->setStartdate(new \DateTime("2016-08-02 09:00:00"));
     $event->setEnddate(new \DateTime("2016-08-02 10:00:00"));
 }
Example #2
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.";
         }
     }
 }
Example #3
0
 /**
  * Renvoit un nouvel évènement créé à partir d'un évènement et d'une date de début
  * Les notes ne sont pas copiées, le statut est mis à "nouveau"
  * @param Event $event
  * @param \DateTime $start UTC start date
  */
 public function createFromEvent(Event $event, $start)
 {
     $newevent = new Event();
     $newevent->setAuthor($event->getAuthor());
     $newevent->setOrganisation($event->getOrganisation());
     $newevent->setCategory($event->getCategory());
     $newevent->setImpact($event->getImpact());
     $newevent->setStatus($this->getEntityManager()->getRepository('Application\\Entity\\Status')->find(1));
     if ($event->getPlace() !== null) {
         $newevent->setPlace($event->getPlace());
     }
     //horaires
     $newevent->setScheduled($event->isScheduled());
     $newevent->setPunctual($event->isPunctual());
     if ($start !== null) {
         //actions can have no start date
         $newevent->setStartdate($start);
         if (!$event->isPunctual() && $event->getEnddate() !== null) {
             $diff = $event->getStartdate()->diff($event->getEnddate());
             $end = clone $start;
             $end->add($diff);
             $newevent->setEnddate($end);
         }
     }
     //enfants
     foreach ($event->getChildren() as $child) {
         $childdate = $start;
         if ($child->getCategory() instanceof AlarmCategory) {
             $diff = $event->getStartdate()->diff($child->getStartdate());
             $alarmdate = clone $newevent->getStartdate();
             $alarmdate->add($diff);
             $childdate = $alarmdate;
         } else {
             if ($child->getCategory() instanceof ActionCategory) {
                 $childdate = null;
             }
         }
         $childEvent = $this->createFromEvent($child, $childdate);
         $childEvent->setParent($newevent);
         $newevent->addChild($childEvent);
     }
     //champs
     foreach ($event->getCustomFieldsValues() as $customFieldsValue) {
         $customFieldValue = new CustomFieldValue();
         $customFieldValue->setEvent($newevent);
         $customFieldValue->setCustomField($customFieldsValue->getCustomField());
         $customFieldValue->setValue($customFieldsValue->getValue());
         $newevent->addCustomFieldValue($customFieldValue);
     }
     //fichiers
     foreach ($event->getFiles() as $file) {
         $newevent->addFile($file);
     }
     return $newevent;
 }
Example #4
0
 private function doAddMilEvent(\Application\Entity\MilCategory $cat, \Application\Entity\Organisation $organisation, \Core\Entity\User $user, $designator, \DateTime $timeBegin, \DateTime $timeEnd, $upperLevel, $lowerLevel, &$messages)
 {
     $event = new \Application\Entity\Event();
     $event->setOrganisation($organisation);
     $event->setAuthor($user);
     $event->setCategory($cat);
     $event->setScheduled(false);
     $event->setPunctual(false);
     $event->setStartdate($timeBegin);
     $status = $this->getEntityManager()->getRepository('Application\\Entity\\Status')->find('1');
     $event->setStatus($status);
     $impact = $this->getEntityManager()->getRepository('Application\\Entity\\Impact')->find('2');
     $event->setImpact($impact);
     $event->setEnddate($timeEnd);
     // name
     $name = new \Application\Entity\CustomFieldValue();
     $name->setCustomField($cat->getFieldname());
     $name->setEvent($event);
     $name->setValue($designator);
     // upperlevel
     $upper = new \Application\Entity\CustomFieldValue();
     $upper->setCustomField($cat->getUpperLevelField());
     $upper->setEvent($event);
     $upper->setValue($upperLevel);
     // lowerlevel
     $lower = new \Application\Entity\CustomFieldValue();
     $lower->setCustomField($cat->getLowerLevelField());
     $lower->setEvent($event);
     $lower->setValue($lowerLevel);
     // recherche d'un modèle existant
     $models = $this->getEntityManager()->getRepository('Application\\Entity\\PredefinedEvent')->findBy(array('name' => $designator, 'organisation' => $organisation, 'category' => $cat));
     if (count($models) === 1) {
         $model = $models[0];
         // ajout des mémos
         foreach ($model->getChildren() as $child) {
             if ($child->getCategory() instanceof \Application\Entity\AlarmCategory) {
                 $alarm = new Event();
                 $alarm->setCategory($this->getEntityManager()->getRepository('Application\\Entity\\AlarmCategory')->findAll()[0]);
                 $alarm->setAuthor($user);
                 $alarm->setOrganisation($organisation);
                 $alarm->setParent($event);
                 $alarm->setStatus($status);
                 $alarm->setPunctual(true);
                 $alarm->setImpact($impact);
                 $startdate = $timeBegin;
                 $alarm->setStartdate($startdate);
                 $namememo = new CustomFieldValue();
                 $namefield = $alarm->getCategory()->getNamefield();
                 $namememo->setCustomField($namefield);
                 $namememo->setValue($child->getCustomFieldValue($namefield)->getValue());
                 $namememo->setEvent($alarm);
                 $alarm->addCustomFieldValue($namememo);
                 $comment = new CustomFieldValue();
                 $commentfield = $alarm->getCategory()->getTextfield();
                 $comment->setCustomField($commentfield);
                 $comment->setValue($child->getCustomFieldValue($commentfield)->getValue());
                 $comment->setEvent($alarm);
                 $alarm->addCustomFieldValue($comment);
                 $deltabegin = new CustomFieldValue();
                 $beginfield = $alarm->getCategory()->getDeltaBeginField();
                 $deltabegin->setCustomField($beginfield);
                 $deltabegin->setValue($child->getCustomFieldValue($beginfield)->getValue());
                 $deltabegin->setEvent($alarm);
                 $alarm->addCustomFieldValue($deltabegin);
                 $deltaend = new CustomFieldValue();
                 $endfield = $alarm->getCategory()->getDeltaEndField();
                 $deltaend->setCustomField($endfield);
                 $deltaend->setValue($child->getCustomFieldValue($endfield)->getValue());
                 $deltaend->setEvent($alarm);
                 $alarm->addCustomFieldValue($deltaend);
                 $event->addChild($alarm);
                 $this->getEntityManager()->persist($namememo);
                 $this->getEntityManager()->persist($comment);
                 $this->getEntityManager()->persist($deltabegin);
                 $this->getEntityManager()->persist($deltaend);
                 $this->getEntityManager()->persist($alarm);
             }
         }
         //ajout des fichiers
         foreach ($model->getFiles() as $file) {
             $file->addEvent($event);
             $this->getEntityManager()->persist($file);
         }
         $event->updateAlarms();
     }
     try {
         $this->getEntityManager()->persist($name);
         $this->getEntityManager()->persist($upper);
         $this->getEntityManager()->persist($lower);
         $this->getEntityManager()->persist($event);
         $this->getEntityManager()->flush();
     } catch (\Exception $ex) {
         error_log($ex->getMessage());
         if ($messages != null) {
             $messages['error'][] = $ex->getMessage();
         }
     }
 }