src/EventSubscriber/MunicipalitySubscriber.php line 48

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Event\AppEvents;
  4. use App\Event\Municipality\MunicipalityEvent;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use App\Entity\CustomField;
  7. use App\Entity\Municipality;
  8. use App\Entity\MunicipalityFormCustomField;
  9. use App\ValueObject\FormTypes;
  10. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  11. /**
  12.  * Class MunicipalityListener
  13.  */
  14. class MunicipalitySubscriber implements EventSubscriberInterface
  15. {
  16.     /**
  17.      * @var EntityManagerInterface
  18.      */
  19.     private $em;
  20.     /**
  21.      * MunicipalityListener constructor.
  22.      *
  23.      * @param EntityManagerInterface $em
  24.      */
  25.     public function __construct(EntityManagerInterface $em)
  26.     {
  27.         $this->em $em;
  28.     }
  29.     /**
  30.      * {@inheritdoc}
  31.      */
  32.     public static function getSubscribedEvents()
  33.     {
  34.         return [
  35.             AppEvents::MUNICIPALITY_CREATED => 'generateDefaultFormFields',
  36.         ];
  37.     }
  38.     /**
  39.      * Generate default form items for each form.
  40.      * @param MunicipalityEvent $event
  41.      */
  42.     public function generateDefaultFormFields($event)
  43.     {
  44.         $em $this->em;
  45.         /** @var Municipality $municipality */
  46.         $municipality $event->getMunicipality();
  47.         foreach (FormTypes::getConstants() as $type) {
  48.             $defaultFields $this->em->getRepository(CustomField::class)->findDefaultFields($type);
  49.             $pos 1;
  50.             foreach ($defaultFields as $customField) {
  51.                 /** @var CustomField $customField */
  52.                 $formField = new MunicipalityFormCustomField($type$municipality$pos);
  53.                 $formField->setCustomField($customField);
  54.                 $pos++;
  55.                 $em->persist($formField);
  56.             }
  57.         }
  58.         $this->em->flush();
  59.     }
  60. }