src/EventSubscriber/FormulaireSubscriber.php line 42

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\Formulaire;
  4. use App\Entity\FormulaireChamp;
  5. use App\Entity\FormulaireChampLiee;
  6. use App\Entity\FormulaireEtape;
  7. use App\Entity\FormulaireInput;
  8. use App\Entity\FormulaireOption;
  9. use App\Entity\FormulaireRecap;
  10. use Doctrine\ORM\EntityManagerInterface;
  11. use Doctrine\Persistence\ManagerRegistry;
  12. use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityPersistedEvent;
  13. use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityUpdatedEvent;
  14. use Psr\Log\LoggerInterface;
  15. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  16. class FormulaireSubscriber implements EventSubscriberInterface
  17. {
  18.     private $entityManager;
  19.     private ManagerRegistry $manager;
  20.     public function __construct(
  21.         ManagerRegistry $manager,
  22.         EntityManagerInterface $entityManager,
  23.         LoggerInterface $logger
  24.     ) {
  25.         $this->manager $manager;
  26.         $this->entityManager $entityManager;
  27.         $this->logger $logger;
  28.     }
  29.     public static function getSubscribedEvents()
  30.     {
  31.         return [
  32.             AfterEntityPersistedEvent::class => ['afterAdd'],
  33.             AfterEntityUpdatedEvent::class => ['afterUpdate']
  34.         ];
  35.     }
  36.     public function afterAdd(AfterEntityPersistedEvent $event)
  37.     {
  38.         $entity $event->getEntityInstance();
  39.         if ($entity instanceof Formulaire) {
  40.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  41.                 $entity->setIdImport(date('Y-m-d-H-i-s') . '-formulaire-' $entity->getId() . "-" $entity->getProjet()->getId());
  42.             }
  43.             $formulaires $entity->getProjet()->getFormulaires();
  44.             $count 0;
  45.             foreach ($formulaires as $key => $formulaire) {
  46.                 if (strtolower($formulaire->getNom()) == strtolower($entity->getNom())) {
  47.                     $count++;
  48.                 }
  49.             }
  50.             if ($count 1) {
  51.                 $this->entityManager->remove($entity);
  52.             }
  53.             $this->entityManager->flush();
  54.         } else if ($entity instanceof FormulaireEtape) {
  55.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  56.                 $entity->setIdImport(date('Y-m-d-H-i-s') . '-formulaire-etape-' $entity->getId() . "-" $entity->getFormulaire()->getId() . "-" $entity->getFormulaire()->getProjet()->getId());
  57.             }
  58.             $entity->setIdImportFormulaire($entity->getFormulaire()->getIdImport());
  59.             if ($entity->getSecure() == 'Email') {
  60.                 // TODO add champliee Email
  61.                 $formChamp $this->manager->getRepository(FormulaireChamp::class)->findOneBy(['nom' => 'contact_email_secure']);
  62.                 if ($formChamp == null) {
  63.                     $formChamp = new FormulaireChamp();
  64.                     $formChamp->setNom('contact_email_secure');
  65.                     $formChamp->setQuestion('Saisissez votre adresse e-mail pour recevoir le code confidentiel');
  66.                     $formChamp->setActif(true);
  67.                     $formInput $this->manager->getRepository(FormulaireInput::class)->findOneBy(['type' => 'email']);
  68.                     if ($formInput == null) {
  69.                         $formInput = new FormulaireInput();
  70.                         $formInput->setType('email');
  71.                         $formInput->setActif(true);
  72.                         $formInput->setProjet($entity->getFormulaire()->getProjet());
  73.                         $this->entityManager->persist($formInput);
  74.                     }
  75.                     $formChamp->setFormulaireInput($formInput);
  76.                     $this->entityManager->persist($formChamp);
  77.                 }
  78.                 $champLiee = new FormulaireChampLiee();
  79.                 $champLiee->setFormulaireChamp($formChamp);
  80.                 $champLiee->setFormulaireEtape($entity);
  81.                 $champLiee->setObligatoire(true);
  82.                 $this->entityManager->persist($champLiee);
  83.             } else if ($entity->getSecure() == 'SMS') {
  84.                 // TODO add champliee SMS
  85.                 $formChamp $this->manager->getRepository(FormulaireChamp::class)->findOneBy(['nom' => 'contact_tel_secure']);
  86.                 if ($formChamp == null) {
  87.                     $formChamp = new FormulaireChamp();
  88.                     $formChamp->setNom('contact_tel_secure');
  89.                     $formChamp->setQuestion('Saisissez votre numéro du téléphone pour recevoir le code confidentiel    ');
  90.                     $formChamp->setActif(true);
  91.                     $formInput $this->manager->getRepository(FormulaireInput::class)->findOneBy(['type' => 'tel']);
  92.                     if ($formInput == null) {
  93.                         $formInput = new FormulaireInput();
  94.                         $formInput->setType('tel');
  95.                         $formInput->setActif(true);
  96.                         $formInput->setProjet($entity->getFormulaire()->getProjet());
  97.                         $this->entityManager->persist($formInput);
  98.                     }
  99.                     $formChamp->setFormulaireInput($formInput);
  100.                     $this->entityManager->persist($formChamp);
  101.                 }
  102.                 $champLiee = new FormulaireChampLiee();
  103.                 $champLiee->setFormulaireChamp($formChamp);
  104.                 $champLiee->setFormulaireEtape($entity);
  105.                 $champLiee->setObligatoire(true);
  106.                 $this->entityManager->persist($champLiee);
  107.             }
  108.             $this->entityManager->flush();
  109.         } else if ($entity instanceof FormulaireChampLiee) {
  110.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  111.                 $entity->setIdImport(date('Y-m-d-H-i-s') . '-formulaire-champ-liee-' $entity->getId() . "-" $entity->getFormulaireEtape()->getId() . "-" $entity->getFormulaireEtape()->getFormulaire()->getId() . "-" $entity->getFormulaireEtape()->getFormulaire()->getProjet()->getId());
  112.             }
  113.             $entity->setIdImportChamp($entity->getFormulaireChamp()->getIdImport());
  114.             $entity->setIdImportEtape($entity->getFormulaireEtape()->getIdImport());
  115.             $this->entityManager->flush();
  116.         } else if ($entity instanceof FormulaireInput) {
  117.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  118.                 $entity->setIdImport(date('Y-m-d-H-i-s') . '-formulaire-input-' $entity->getId() . "-" $entity->getProjet()->getId());
  119.             }
  120.             $formInputs $entity->getProjet()->getFormulaireInputs();
  121.             $count 0;
  122.             foreach ($formInputs as $key => $formInput) {
  123.                 if (strtolower($formInput->getType()) == strtolower($entity->getType())) {
  124.                     $count++;
  125.                 }
  126.             }
  127.             if ($count 1) {
  128.                 $this->entityManager->remove($entity);
  129.             }
  130.             $this->entityManager->flush();
  131.         } else if ($entity instanceof FormulaireRecap) {
  132.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  133.                 $entity->setIdImport(date('Y-m-d-H-i-s') . '-formulaire-recap-' $entity->getId() . "-" $entity->getProjet()->getId());
  134.             }
  135.             $formulaireRecaps $entity->getProjet()->getFormulaireRecaps();
  136.             $count 0;
  137.             foreach ($formulaireRecaps as $key => $formulaireRecap) {
  138.                 if (strtolower($formulaireRecap->getRecap()) == strtolower($entity->getRecap())) {
  139.                     $count++;
  140.                 }
  141.             }
  142.             if ($count 1) {
  143.                 $this->entityManager->remove($entity);
  144.             }
  145.             $this->entityManager->flush();
  146.         } else if ($entity instanceof FormulaireChamp) {
  147.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  148.                 $entity->setIdImport(date('Y-m-d-H-i-s') . '-formulaire-champ-' $entity->getId() . "-" $entity->getFormulaireInput()->getProjet()->getId());
  149.             }
  150.             $entity->setIdImportInput($entity->getFormulaireInput()->getIdImport());
  151.             if ($entity->getFormulaireRecap() != null) {
  152.                 $entity->setIdImportRecap($entity->getFormulaireRecap()->getIdImport());
  153.             }
  154.             $entity->setNom($this->slugify($entity->getNom()));
  155.             $formChamps $entity->getFormulaireInput()->getFormulaireChamps();
  156.             $count 0;
  157.             foreach ($formChamps as $key => $formChamp) {
  158.                 if (strtolower($formChamp->getNom()) == strtolower($entity->getNom())) {
  159.                     $count++;
  160.                 }
  161.             }
  162.             if ($count 1) {
  163.                 $this->entityManager->remove($entity);
  164.             }
  165.             $this->entityManager->flush();
  166.         } else if ($entity instanceof FormulaireOption) {
  167.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  168.                 $entity->setIdImport(date('Y-m-d-H-i-s') . '-formulaire-option-' $entity->getId() . "-" $entity->getFormulaireChamp()->getId());
  169.             }
  170.             $entity->setIdImportChamp($entity->getFormulaireChamp()->getIdImport());
  171.             $this->entityManager->flush();
  172.         } else {
  173.             return;
  174.         }
  175.     }
  176.     public function afterUpdate(AfterEntityUpdatedEvent $event)
  177.     {
  178.         $entity $event->getEntityInstance();
  179.         if ($entity instanceof Formulaire) {
  180.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  181.                 $entity->setIdImport(date('Y-m-d-H-i-s') . '-formulaire-' $entity->getId() . "-" $entity->getProjet()->getId());
  182.             }
  183.             $this->entityManager->flush();
  184.         } else if ($entity instanceof FormulaireEtape) {
  185.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  186.                 $entity->setIdImport(date('Y-m-d-H-i-s') . '-formulaire-etape-' $entity->getId() . "-" $entity->getFormulaire()->getId() . "-" $entity->getFormulaire()->getProjet()->getId());
  187.             }
  188.             if ($entity->getSecure() == 'Email') {
  189.                 $formChampEmail $this->manager->getRepository(FormulaireChamp::class)->findOneBy(['nom' => 'contact_email_secure']);
  190.                 if ($formChampEmail != null) {
  191.                     $champLieeEmail $this->manager->getRepository(FormulaireChampLiee::class)->findOneBy(['formulaireChamp' => $formChampEmail'formulaireEtape' => $entity]);
  192.                     if ($champLieeEmail != null) {
  193.                         $this->entityManager->remove($champLieeEmail);
  194.                     }
  195.                 }
  196.                 $formChampTel $this->manager->getRepository(FormulaireChamp::class)->findOneBy(['nom' => 'contact_tel_secure']);
  197.                 if ($formChampTel != null) {
  198.                     $champLieeTel $this->manager->getRepository(FormulaireChampLiee::class)->findOneBy(['formulaireChamp' => $formChampTel'formulaireEtape' => $entity]);
  199.                     if ($champLieeTel != null) {
  200.                         $this->entityManager->remove($champLieeTel);
  201.                     }
  202.                 }
  203.                 // TODO add champliee Email
  204.                 $formChamp $this->manager->getRepository(FormulaireChamp::class)->findOneBy(['nom' => 'contact_email_secure']);
  205.                 if ($formChamp == null) {
  206.                     $formChamp = new FormulaireChamp();
  207.                     $formChamp->setNom('contact_email_secure');
  208.                     $formChamp->setQuestion('Saisissez votre adresse e-mail pour recevoir le code confidentiel');
  209.                     $formChamp->setActif(true);
  210.                     $formInput $this->manager->getRepository(FormulaireInput::class)->findOneBy(['type' => 'email']);
  211.                     if ($formInput == null) {
  212.                         $formInput = new FormulaireInput();
  213.                         $formInput->setType('email');
  214.                         $formInput->setActif(true);
  215.                         $formInput->setProjet($entity->getFormulaire()->getProjet());
  216.                         $this->entityManager->persist($formInput);
  217.                     }
  218.                     $formChamp->setFormulaireInput($formInput);
  219.                     $this->entityManager->persist($formChamp);
  220.                 }
  221.                 $champLiee $this->manager->getRepository(FormulaireChampLiee::class)->findOneBy(['formulaireChamp' => $formChamp'formulaireEtape' => $entity]);
  222.                 if ($champLiee == null) {
  223.                     $champLiee = new FormulaireChampLiee();
  224.                     $champLiee->setFormulaireChamp($formChamp);
  225.                     $champLiee->setFormulaireEtape($entity);
  226.                 }
  227.                 $champLiee->setObligatoire(true);
  228.                 $this->entityManager->persist($champLiee);
  229.             } else if ($entity->getSecure() == 'SMS') {
  230.                 $formChampEmail $this->manager->getRepository(FormulaireChamp::class)->findOneBy(['nom' => 'contact_email_secure']);
  231.                 if ($formChampEmail != null) {
  232.                     $champLieeEmail $this->manager->getRepository(FormulaireChampLiee::class)->findOneBy(['formulaireChamp' => $formChampEmail'formulaireEtape' => $entity]);
  233.                     if ($champLieeEmail != null) {
  234.                         $this->entityManager->remove($champLieeEmail);
  235.                     }
  236.                 }
  237.                 $formChampTel $this->manager->getRepository(FormulaireChamp::class)->findOneBy(['nom' => 'contact_tel_secure']);
  238.                 if ($formChampTel != null) {
  239.                     $champLieeTel $this->manager->getRepository(FormulaireChampLiee::class)->findOneBy(['formulaireChamp' => $formChampTel'formulaireEtape' => $entity]);
  240.                     if ($champLieeTel != null) {
  241.                         $this->entityManager->remove($champLieeTel);
  242.                     }
  243.                 }
  244.                 // TODO add champliee SMS
  245.                 $formChamp $this->manager->getRepository(FormulaireChamp::class)->findOneBy(['nom' => 'contact_tel_secure']);
  246.                 if ($formChamp == null) {
  247.                     $formChamp = new FormulaireChamp();
  248.                     $formChamp->setNom('contact_tel_secure');
  249.                     $formChamp->setQuestion('Saisissez votre numéro du téléphone pour recevoir le code confidentiel    ');
  250.                     $formChamp->setActif(true);
  251.                     $formInput $this->manager->getRepository(FormulaireInput::class)->findOneBy(['type' => 'tel']);
  252.                     if ($formInput == null) {
  253.                         $formInput = new FormulaireInput();
  254.                         $formInput->setType('tel');
  255.                         $formInput->setActif(true);
  256.                         $formInput->setProjet($entity->getFormulaire()->getProjet());
  257.                         $this->entityManager->persist($formInput);
  258.                     }
  259.                     $formChamp->setFormulaireInput($formInput);
  260.                     $this->entityManager->persist($formChamp);
  261.                 }
  262.                 $champLiee $this->manager->getRepository(FormulaireChampLiee::class)->findOneBy(['formulaireChamp' => $formChamp'formulaireEtape' => $entity]);
  263.                 if ($champLiee == null) {
  264.                     $champLiee = new FormulaireChampLiee();
  265.                     $champLiee->setFormulaireChamp($formChamp);
  266.                     $champLiee->setFormulaireEtape($entity);
  267.                 }
  268.                 $champLiee->setObligatoire(true);
  269.                 $this->entityManager->persist($champLiee);
  270.             } else {
  271.                 $formChampEmail $this->manager->getRepository(FormulaireChamp::class)->findOneBy(['nom' => 'contact_email_secure']);
  272.                 if ($formChampEmail != null) {
  273.                     $champLieeEmail $this->manager->getRepository(FormulaireChampLiee::class)->findOneBy(['formulaireChamp' => $formChampEmail'formulaireEtape' => $entity]);
  274.                     if ($champLieeEmail != null) {
  275.                         $this->entityManager->remove($champLieeEmail);
  276.                     }
  277.                 }
  278.                 $formChampTel $this->manager->getRepository(FormulaireChamp::class)->findOneBy(['nom' => 'contact_tel_secure']);
  279.                 if ($formChampTel != null) {
  280.                     $champLieeTel $this->manager->getRepository(FormulaireChampLiee::class)->findOneBy(['formulaireChamp' => $formChampTel'formulaireEtape' => $entity]);
  281.                     if ($champLieeTel != null) {
  282.                         $this->entityManager->remove($champLieeTel);
  283.                     }
  284.                 }
  285.             }
  286.             $entity->setIdImportFormulaire($entity->getFormulaire()->getIdImport());
  287.             $this->entityManager->flush();
  288.         } else if ($entity instanceof FormulaireChampLiee) {
  289.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  290.                 $entity->setIdImport(date('Y-m-d-H-i-s') . '-formulaire-champ-liee-' $entity->getId() . "-" $entity->getFormulaireEtape()->getId() . "-" $entity->getFormulaireEtape()->getFormulaire()->getId() . "-" $entity->getFormulaireEtape()->getFormulaire()->getProjet()->getId());
  291.             }
  292.             $entity->setIdImportChamp($entity->getFormulaireChamp()->getIdImport());
  293.             $entity->setIdImportEtape($entity->getFormulaireEtape()->getIdImport());
  294.             $this->entityManager->flush();
  295.         } else if ($entity instanceof FormulaireInput) {
  296.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  297.                 $entity->setIdImport(date('Y-m-d-H-i-s') . '-formulaire-input-' $entity->getId() . "-" $entity->getProjet()->getId());
  298.             }
  299.             $this->entityManager->flush();
  300.         } else if ($entity instanceof FormulaireRecap) {
  301.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  302.                 $entity->setIdImport(date('Y-m-d-H-i-s') . '-formulaire-recap-' $entity->getId() . "-" $entity->getProjet()->getId());
  303.             }
  304.             $this->entityManager->flush();
  305.         } else if ($entity instanceof FormulaireChamp) {
  306.             $entity->setNom($this->slugify($entity->getNom()));
  307.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  308.                 $entity->setIdImport(date('Y-m-d-H-i-s') . '-formulaire-champ-' $entity->getId() . "-" $entity->getFormulaireInput()->getProjet()->getId());
  309.             }
  310.             $entity->setIdImportInput($entity->getFormulaireInput()->getIdImport());
  311.             if ($entity->getFormulaireRecap() != null) {
  312.                 $entity->setIdImportRecap($entity->getFormulaireRecap()->getIdImport());
  313.             }
  314.             $this->entityManager->flush();
  315.         } else if ($entity instanceof FormulaireOption) {
  316.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  317.                 $entity->setIdImport(date('Y-m-d-H-i-s') . '-formulaire-option-' $entity->getId() . "-" $entity->getFormulaireChamp()->getId());
  318.             }
  319.             $entity->setIdImportChamp($entity->getFormulaireChamp()->getIdImport());
  320.             $this->entityManager->flush();
  321.         } else {
  322.             return;
  323.         }
  324.     }
  325.     public function slugify($string)
  326.     {
  327.         return strtolower(trim(preg_replace('~[^0-9a-z]+~i''-'html_entity_decode(preg_replace('~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i''$1'htmlentities($stringENT_QUOTES'UTF-8')), ENT_QUOTES'UTF-8')), '-'));
  328.     }
  329. }