public function createBrouillageCategory() { $em = $this->getEntityManager(); $brouillagecat = new BrouillageCategory(); $frequencyfield = new CustomField(); $frequencyfield->setCategory($brouillagecat); $frequencyfield->setName('Fréquence'); $frequencyfield->setType($em->getRepository('Application\\Entity\\CustomFieldType')->findOneBy(array('type' => 'frequency'))); $frequencyfield->setPlace(1); $frequencyfield->setDefaultValue(""); $frequencyfield->setTooltip(""); $levelfield = new CustomField(); $levelfield->setCategory($brouillagecat); $levelfield->setName('Niveau'); $levelfield->setType($em->getRepository('Application\\Entity\\CustomFieldType')->findOneBy(array('type' => 'string'))); $levelfield->setPlace(2); $levelfield->setDefaultValue(""); $levelfield->setTooltip(""); $rnavfield = new CustomField(); $rnavfield->setCategory($brouillagecat); $rnavfield->setName('Balise'); $rnavfield->setType($em->getRepository('Application\\Entity\\CustomFieldType')->findOneBy(array('type' => 'string'))); $rnavfield->setPlace(3); $rnavfield->setDefaultValue(""); $rnavfield->setTooltip(""); $distancefield = new CustomField(); $distancefield->setCategory($brouillagecat); $distancefield->setName('Distance'); $distancefield->setType($em->getRepository('Application\\Entity\\CustomFieldType')->findOneBy(array('type' => 'string'))); $distancefield->setPlace(4); $distancefield->setDefaultValue(""); $distancefield->setTooltip(""); $azimutfield = new CustomField(); $azimutfield->setCategory($brouillagecat); $azimutfield->setName('Azimut'); $azimutfield->setType($em->getRepository('Application\\Entity\\CustomFieldType')->findOneBy(array('type' => 'string'))); $azimutfield->setPlace(5); $azimutfield->setDefaultValue(""); $azimutfield->setTooltip(""); $originfield = new CustomField(); $originfield->setCategory($brouillagecat); $originfield->setName('Plaignant'); $originfield->setType($em->getRepository('Application\\Entity\\CustomFieldType')->findOneBy(array('type' => 'select'))); $originfield->setPlace(6); $originfield->setDefaultValue("Sol\nBord\nSol+Bord"); $originfield->setTooltip(""); $typefield = new CustomField(); $typefield->setCategory($brouillagecat); $typefield->setName('Type de bruit'); $typefield->setType($em->getRepository('Application\\Entity\\CustomFieldType')->findOneBy(array('type' => 'select'))); $typefield->setPlace(7); $typefield->setDefaultValue("Brouillage\nInterférence"); $typefield->setTooltip(""); $causebrouillagefield = new CustomField(); $causebrouillagefield->setCategory($brouillagecat); $causebrouillagefield->setName('Cause du brouillage'); $causebrouillagefield->setType($em->getRepository('Application\\Entity\\CustomFieldType')->findOneBy(array('type' => 'select'))); $causebrouillagefield->setPlace(8); $causebrouillagefield->setDefaultValue("Radio FM\nBruit industriel\nAutre\nRien"); $causebrouillagefield->setTooltip(""); $causeinterferencefield = new CustomField(); $causeinterferencefield->setCategory($brouillagecat); $causeinterferencefield->setName('Cause interférence'); $causeinterferencefield->setType($em->getRepository('Application\\Entity\\CustomFieldType')->findOneBy(array('type' => 'select'))); $causeinterferencefield->setPlace(10); $causeinterferencefield->setDefaultValue("Porteuse\nÉmission permanente\nAutre fréquence"); $causeinterferencefield->setTooltip(""); $commentairebrouillagefield = new CustomField(); $commentairebrouillagefield->setCategory($brouillagecat); $commentairebrouillagefield->setName('Cause du brouillage (commentaire)'); $commentairebrouillagefield->setType($em->getRepository('Application\\Entity\\CustomFieldType')->findOneBy(array('type' => 'text'))); $commentairebrouillagefield->setPlace(9); $commentairebrouillagefield->setDefaultValue(""); $commentairebrouillagefield->setTooltip(""); $commentaireinterferencefield = new CustomField(); $commentaireinterferencefield->setCategory($brouillagecat); $commentaireinterferencefield->setName('Cause interférence (commentaire)'); $commentaireinterferencefield->setType($em->getRepository('Application\\Entity\\CustomFieldType')->findOneBy(array('type' => 'text'))); $commentaireinterferencefield->setPlace(11); $commentaireinterferencefield->setDefaultValue(""); $commentaireinterferencefield->setTooltip(""); $brouillagecat->setFieldname($frequencyfield); $brouillagecat->setFrequencyfield($frequencyfield); $brouillagecat->setLevelField($levelfield); $brouillagecat->setRnavField($rnavfield); $brouillagecat->setDistanceField($distancefield); $brouillagecat->setAzimutField($azimutfield); $brouillagecat->setOriginField($originfield); $brouillagecat->setTypeField($typefield); $brouillagecat->setCauseBrouillageField($causebrouillagefield); $brouillagecat->setCauseInterferenceField($causeinterferencefield); $brouillagecat->setCommentaireBrouillageField($commentairebrouillagefield); $brouillagecat->setCommentaireInterferenceField($commentaireinterferencefield); $em->persist($frequencyfield); $em->persist($levelfield); $em->persist($rnavfield); $em->persist($distancefield); $em->persist($azimutfield); $em->persist($originfield); $em->persist($typefield); $em->persist($causebrouillagefield); $em->persist($causeinterferencefield); $em->persist($commentairebrouillagefield); $em->persist($commentaireinterferencefield); // si aucune cat par défaut --> nouvelle catégorie par défaut $cats = $em->getRepository('Application\\Entity\\BrouillageCategory')->findBy(array('defaultbrouillagecategory' => true)); $brouillagecat->setDefaultBrouillageCategory(count($cats) == 0); return $brouillagecat; }
public function saveAction() { $objectManager = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager'); if ($this->getRequest()->isPost()) { $post = $this->getRequest()->getPost(); $fieldname = null; if ($post['id']) { $category = $objectManager->getRepository('Application\\Entity\\Category')->find($post['id']); } else { if ($post['type'] == 'radar') { $category = $this->getServiceLocator()->get('categoryfactory')->createRadarCategory(); } elseif ($post['type'] == 'antenna') { $category = $this->getServiceLocator()->get('categoryfactory')->createAntennaCategory(); } elseif ($post['type'] == 'frequency') { $category = $this->getServiceLocator()->get('categoryfactory')->createFrequencyCategory(); } elseif ($post['type'] == 'brouillage') { $category = $this->getServiceLocator()->get('categoryfactory')->createBrouillageCategory(); } elseif ($post['type'] == 'mil') { $category = $this->getServiceLocator()->get('categoryfactory')->createMilCategory(); } else { $category = new Category(); $fieldname = new CustomField(); $fieldname->setCategory($category); $fieldname->setName('Nom'); $fieldname->setType($objectManager->getRepository('Application\\Entity\\CustomFieldType')->findOneBy(array('type' => 'string'))); $fieldname->setPlace(1); $fieldname->setDefaultvalue(""); $fieldname->setTooltip(""); $objectManager->persist($fieldname); $category->setFieldname($fieldname); } // force fieldname value $fieldname = $category->getFieldname(); } $builder = new AnnotationBuilder(); $form = $builder->createForm($category); $form->setHydrator(new DoctrineObject($objectManager))->setObject($category); $form->get('parent')->setValueOptions($objectManager->getRepository('Application\\Entity\\Category')->getRootsAsArray($post['id'])); $form->bind($category); $form->setData($post); $form->setPreferFormInputFilter(true); if ($form->isValid()) { if (!$post['id']) { // if new cat, force fieldname $category->setFieldname($fieldname); } if (!(strpos($category->getColor(), "#") === 0)) { $category->setColor("#" . $category->getColor()); } $objectManager->persist($category); $objectManager->flush(); $this->flashMessenger()->addSuccessMessage("Catégorie modifiée"); } else { $this->flashMessenger()->addErrorMessage("Impossible de modifier la catégorie."); // traitement des erreurs de validation $this->processFormMessages($form->getMessages()); } } return $this->redirect()->toRoute('administration', array('controller' => 'categories')); }