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")); }
/** * * @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."; } } }
/** * 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; }
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(); } } }