/** * Crée un nouvel évènement pour un changement de fréquence * * @param \Application\Repository\Frequency $from * @param \Application\Repository\Frequency $to * @param \Application\Repository\Event $parent * @param type $messages */ public function addSwitchFrequencyEvent(Frequency $from, Frequency $to, \Core\Entity\User $author, Event $parent = null, &$messages = null) { $now = new \DateTime('NOW'); $now->setTimezone(new \DateTimeZone("UTC")); $em = $this->getEntityManager(); $event = new Event(); $event->setParent($parent); $status = $em->getRepository('Application\\Entity\\Status')->find('2'); $impact = $em->getRepository('Application\\Entity\\Impact')->find('3'); $event->setImpact($impact); $event->setStatus($status); $event->setStartdate($now); $event->setPunctual(false); // TODO fix horrible en attendant de gérer correctement les fréquences sans secteur if ($from->getDefaultsector()) { $event->setOrganisation($from->getDefaultsector()->getZone()->getOrganisation()); $event->addZonefilter($from->getDefaultsector()->getZone()); } else { $event->setOrganisation($author->getOrganisation()); } $event->setAuthor($author); $categories = $em->getRepository('Application\\Entity\\FrequencyCategory')->findBy(array('defaultfrequencycategory' => true)); if ($categories) { $cat = $categories[0]; $event->setCategory($cat); $frequencyfieldvalue = new CustomFieldValue(); $frequencyfieldvalue->setCustomField($cat->getFrequencyField()); $frequencyfieldvalue->setEvent($event); $frequencyfieldvalue->setValue($from->getId()); $event->addCustomFieldValue($frequencyfieldvalue); $statusfield = new CustomFieldValue(); $statusfield->setCustomField($cat->getStateField()); $statusfield->setEvent($event); $statusfield->setValue(false); // available $event->addCustomFieldValue($statusfield); $freqfield = new CustomFieldValue(); $freqfield->setCustomField($cat->getOtherFrequencyField()); $freqfield->setEvent($event); $freqfield->setValue($to->getId()); $event->addCustomFieldValue($freqfield); $em->persist($frequencyfieldvalue); $em->persist($statusfield); $em->persist($freqfield); $em->persist($event); try { $em->flush(); $messages['success'][] = "Changement de fréquence pour " . $from->getName() . " enregistré."; } catch (\Exception $e) { $messages['error'][] = $e->getMessage(); } } else { $messages['error'][] = "Erreur : aucune catégorie trouvée."; } }