Exemplo n.º 1
0
 /**
  * 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.";
     }
 }