src/EventSubscriber/FormulaireSubscriber.php line 227

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.                 $idSetImport date('YmdHis') . microtime(true) . 'formulaire' $entity->getId() . "" $entity->getProjet()->getId();
  42.                 $entity->setIdImport(str_replace("."""$idSetImport));
  43.             }
  44.             $formulaires $entity->getProjet()->getFormulaires();
  45.             $count 0;
  46.             foreach ($formulaires as $key => $formulaire) {
  47.                 if (strtolower($formulaire->getNom()) == strtolower($entity->getNom())) {
  48.                     $count++;
  49.                 }
  50.             }
  51.             if ($count 1) {
  52.                 $this->entityManager->remove($entity);
  53.             }
  54.             $this->entityManager->flush();
  55.         } else if ($entity instanceof FormulaireEtape) {
  56.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  57.                 $idSetImport date('YmdHis') . microtime(true) . 'formulaireEtape' $entity->getId() . "" $entity->getFormulaire()->getId() . "" $entity->getFormulaire()->getProjet()->getId();
  58.                 $entity->setIdImport(str_replace("."""$idSetImport));
  59.             }
  60.             $entity->setIdImportFormulaire($entity->getFormulaire()->getIdImport());
  61.             if ($entity->getSecure() == 'Email') {
  62.                 // TODO add champliee Email
  63.                 $formChamp $this->manager->getRepository(FormulaireChamp::class)->findOneBy(['nom' => 'contact_email_secure']);
  64.                 if ($formChamp == null) {
  65.                     $formChamp = new FormulaireChamp();
  66.                     $formChamp->setNom('contact_email_secure');
  67.                     $formChamp->setQuestion('Saisissez votre adresse e-mail pour recevoir le code confidentiel');
  68.                     $formChamp->setActif(true);
  69.                     $formInput $this->manager->getRepository(FormulaireInput::class)->findOneBy(['type' => 'email']);
  70.                     if ($formInput == null) {
  71.                         $formInput = new FormulaireInput();
  72.                         $formInput->setType('email');
  73.                         $formInput->setActif(true);
  74.                         $formInput->setProjet($entity->getFormulaire()->getProjet());
  75.                         $this->entityManager->persist($formInput);
  76.                     }
  77.                     $formChamp->setFormulaireInput($formInput);
  78.                     $this->entityManager->persist($formChamp);
  79.                 }
  80.                 $champLiee = new FormulaireChampLiee();
  81.                 $champLiee->setFormulaireChamp($formChamp);
  82.                 $champLiee->setFormulaireEtape($entity);
  83.                 $champLiee->setObligatoire(true);
  84.                 $this->entityManager->persist($champLiee);
  85.             } else if ($entity->getSecure() == 'SMS') {
  86.                 // TODO add champliee SMS
  87.                 $formChamp $this->manager->getRepository(FormulaireChamp::class)->findOneBy(['nom' => 'contact_tel_secure']);
  88.                 if ($formChamp == null) {
  89.                     $formChamp = new FormulaireChamp();
  90.                     $formChamp->setNom('contact_tel_secure');
  91.                     $formChamp->setQuestion('Saisissez votre numéro du téléphone pour recevoir le code confidentiel    ');
  92.                     $formChamp->setActif(true);
  93.                     $formInput $this->manager->getRepository(FormulaireInput::class)->findOneBy(['type' => 'tel']);
  94.                     if ($formInput == null) {
  95.                         $formInput = new FormulaireInput();
  96.                         $formInput->setType('tel');
  97.                         $formInput->setActif(true);
  98.                         $formInput->setProjet($entity->getFormulaire()->getProjet());
  99.                         $this->entityManager->persist($formInput);
  100.                     }
  101.                     $formChamp->setFormulaireInput($formInput);
  102.                     $this->entityManager->persist($formChamp);
  103.                 }
  104.                 $champLiee = new FormulaireChampLiee();
  105.                 $champLiee->setFormulaireChamp($formChamp);
  106.                 $champLiee->setFormulaireEtape($entity);
  107.                 $champLiee->setObligatoire(true);
  108.                 $this->entityManager->persist($champLiee);
  109.             }
  110.             $this->entityManager->flush();
  111.         } else if ($entity instanceof FormulaireChampLiee) {
  112.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  113.                 
  114.                 $idSetImport date('YmdHis') . microtime(true) . 'formulaireChampLiee' $entity->getId() . "" $entity->getFormulaireEtape()->getId() . "" $entity->getFormulaireEtape()->getFormulaire()->getId() . "" $entity->getFormulaireEtape()->getFormulaire()->getProjet()->getId();
  115.                 $entity->setIdImport(str_replace("."""$idSetImport));
  116.             }
  117.             $entity->setIdImportChamp($entity->getFormulaireChamp()->getIdImport());
  118.             $entity->setIdImportEtape($entity->getFormulaireEtape()->getIdImport());
  119.             $this->entityManager->flush();
  120.         } else if ($entity instanceof FormulaireInput) {
  121.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  122.                 $idSetImport date('YmdHis') . microtime(true) . 'formulaireInput' $entity->getId() . "" $entity->getProjet()->getId();
  123.                 $entity->setIdImport(str_replace("."""$idSetImport));
  124.             }
  125.             $formInputs $entity->getProjet()->getFormulaireInputs();
  126.             $count 0;
  127.             foreach ($formInputs as $key => $formInput) {
  128.                 if (strtolower($formInput->getType()) == strtolower($entity->getType())) {
  129.                     $count++;
  130.                 }
  131.             }
  132.             if ($count 1) {
  133.                 $this->entityManager->remove($entity);
  134.             }
  135.             $this->entityManager->flush();
  136.         } else if ($entity instanceof FormulaireRecap) {
  137.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  138.                 $idSetImport date('YmdHis') . microtime(true) . 'formulaireRecap' $entity->getId() . "" $entity->getProjet()->getId();
  139.                 $entity->setIdImport(str_replace("."""$idSetImport));
  140.             }
  141.             $formulaireRecaps $entity->getProjet()->getFormulaireRecaps();
  142.             $count 0;
  143.             foreach ($formulaireRecaps as $key => $formulaireRecap) {
  144.                 if (strtolower($formulaireRecap->getRecap()) == strtolower($entity->getRecap())) {
  145.                     $count++;
  146.                 }
  147.             }
  148.             if ($count 1) {
  149.                 $this->entityManager->remove($entity);
  150.             }
  151.             $this->entityManager->flush();
  152.         } else if ($entity instanceof FormulaireChamp) {
  153.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  154.                 $idSetImport date('YmdHis') . microtime(true) . 'formulaireChamp' $entity->getId() . "" $entity->getFormulaireInput()->getProjet()->getId();
  155.                 $entity->setIdImport(str_replace("."""$idSetImport));
  156.             }
  157.             $entity->setIdImportInput($entity->getFormulaireInput()->getIdImport());
  158.             if ($entity->getFormulaireRecap() != null) {
  159.                 $entity->setIdImportRecap($entity->getFormulaireRecap()->getIdImport());
  160.             }
  161.             $entity->setNom($this->slugify($entity->getNom()));
  162.             $formChamps $entity->getFormulaireInput()->getFormulaireChamps();
  163.             $count 0;
  164.             foreach ($formChamps as $key => $formChamp) {
  165.                 if (strtolower($formChamp->getNom()) == strtolower($entity->getNom())) {
  166.                     $count++;
  167.                 }
  168.             }
  169.             if ($count 1) {
  170.                 $this->entityManager->remove($entity);
  171.             }
  172.             $this->entityManager->flush();
  173.         } else if ($entity instanceof FormulaireOption) {
  174.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  175.                 $idSetImport date('YmdHis') . microtime(true) . 'formulaireOption' $entity->getId() . "" $entity->getFormulaireChamp()->getId();
  176.                 $entity->setIdImport(str_replace("."""$idSetImport));
  177.             }
  178.             $entity->setIdImportChamp($entity->getFormulaireChamp()->getIdImport());
  179.             $this->entityManager->flush();
  180.         } else {
  181.             return;
  182.         }
  183.     }
  184.     public function afterUpdate(AfterEntityUpdatedEvent $event)
  185.     {
  186.         $entity $event->getEntityInstance();
  187.         if ($entity instanceof Formulaire) {
  188.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  189.                 $idSetImport date('YmdHis') . microtime(true) . 'formulaire' $entity->getId() . "" $entity->getProjet()->getId();
  190.                 $entity->setIdImport(str_replace("."""$idSetImport));
  191.             }
  192.             $this->entityManager->flush();
  193.         } else if ($entity instanceof FormulaireEtape) {
  194.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  195.                 $idSetImport date('YmdHis') . microtime(true) . 'formulaireEtape' $entity->getId() . "" $entity->getFormulaire()->getId() . "" $entity->getFormulaire()->getProjet()->getId();
  196.                 $entity->setIdImport(str_replace("."""$idSetImport));
  197.             }
  198.             if ($entity->getSecure() == 'Email') {
  199.                 $formChampEmail $this->manager->getRepository(FormulaireChamp::class)->findOneBy(['nom' => 'contact_email_secure']);
  200.                 if ($formChampEmail != null) {
  201.                     $champLieeEmail $this->manager->getRepository(FormulaireChampLiee::class)->findOneBy(['formulaireChamp' => $formChampEmail'formulaireEtape' => $entity]);
  202.                     if ($champLieeEmail != null) {
  203.                         $this->entityManager->remove($champLieeEmail);
  204.                     }
  205.                 }
  206.                 $formChampTel $this->manager->getRepository(FormulaireChamp::class)->findOneBy(['nom' => 'contact_tel_secure']);
  207.                 if ($formChampTel != null) {
  208.                     $champLieeTel $this->manager->getRepository(FormulaireChampLiee::class)->findOneBy(['formulaireChamp' => $formChampTel'formulaireEtape' => $entity]);
  209.                     if ($champLieeTel != null) {
  210.                         $this->entityManager->remove($champLieeTel);
  211.                     }
  212.                 }
  213.                 // TODO add champliee Email
  214.                 $formChamp $this->manager->getRepository(FormulaireChamp::class)->findOneBy(['nom' => 'contact_email_secure']);
  215.                 if ($formChamp == null) {
  216.                     $formChamp = new FormulaireChamp();
  217.                     $formChamp->setNom('contact_email_secure');
  218.                     $formChamp->setQuestion('Saisissez votre adresse e-mail pour recevoir le code confidentiel');
  219.                     $formChamp->setActif(true);
  220.                     $formInput $this->manager->getRepository(FormulaireInput::class)->findOneBy(['type' => 'email']);
  221.                     if ($formInput == null) {
  222.                         $formInput = new FormulaireInput();
  223.                         $formInput->setType('email');
  224.                         $formInput->setActif(true);
  225.                         $formInput->setProjet($entity->getFormulaire()->getProjet());
  226.                         $this->entityManager->persist($formInput);
  227.                     }
  228.                     $formChamp->setFormulaireInput($formInput);
  229.                     $this->entityManager->persist($formChamp);
  230.                 }
  231.                 $champLiee $this->manager->getRepository(FormulaireChampLiee::class)->findOneBy(['formulaireChamp' => $formChamp'formulaireEtape' => $entity]);
  232.                 if ($champLiee == null) {
  233.                     $champLiee = new FormulaireChampLiee();
  234.                     $champLiee->setFormulaireChamp($formChamp);
  235.                     $champLiee->setFormulaireEtape($entity);
  236.                 }
  237.                 $champLiee->setObligatoire(true);
  238.                 $this->entityManager->persist($champLiee);
  239.             } else if ($entity->getSecure() == 'SMS') {
  240.                 $formChampEmail $this->manager->getRepository(FormulaireChamp::class)->findOneBy(['nom' => 'contact_email_secure']);
  241.                 if ($formChampEmail != null) {
  242.                     $champLieeEmail $this->manager->getRepository(FormulaireChampLiee::class)->findOneBy(['formulaireChamp' => $formChampEmail'formulaireEtape' => $entity]);
  243.                     if ($champLieeEmail != null) {
  244.                         $this->entityManager->remove($champLieeEmail);
  245.                     }
  246.                 }
  247.                 $formChampTel $this->manager->getRepository(FormulaireChamp::class)->findOneBy(['nom' => 'contact_tel_secure']);
  248.                 if ($formChampTel != null) {
  249.                     $champLieeTel $this->manager->getRepository(FormulaireChampLiee::class)->findOneBy(['formulaireChamp' => $formChampTel'formulaireEtape' => $entity]);
  250.                     if ($champLieeTel != null) {
  251.                         $this->entityManager->remove($champLieeTel);
  252.                     }
  253.                 }
  254.                 // TODO add champliee SMS
  255.                 $formChamp $this->manager->getRepository(FormulaireChamp::class)->findOneBy(['nom' => 'contact_tel_secure']);
  256.                 if ($formChamp == null) {
  257.                     $formChamp = new FormulaireChamp();
  258.                     $formChamp->setNom('contact_tel_secure');
  259.                     $formChamp->setQuestion('Saisissez votre numéro du téléphone pour recevoir le code confidentiel    ');
  260.                     $formChamp->setActif(true);
  261.                     $formInput $this->manager->getRepository(FormulaireInput::class)->findOneBy(['type' => 'tel']);
  262.                     if ($formInput == null) {
  263.                         $formInput = new FormulaireInput();
  264.                         $formInput->setType('tel');
  265.                         $formInput->setActif(true);
  266.                         $formInput->setProjet($entity->getFormulaire()->getProjet());
  267.                         $this->entityManager->persist($formInput);
  268.                     }
  269.                     $formChamp->setFormulaireInput($formInput);
  270.                     $this->entityManager->persist($formChamp);
  271.                 }
  272.                 $champLiee $this->manager->getRepository(FormulaireChampLiee::class)->findOneBy(['formulaireChamp' => $formChamp'formulaireEtape' => $entity]);
  273.                 if ($champLiee == null) {
  274.                     $champLiee = new FormulaireChampLiee();
  275.                     $champLiee->setFormulaireChamp($formChamp);
  276.                     $champLiee->setFormulaireEtape($entity);
  277.                 }
  278.                 $champLiee->setObligatoire(true);
  279.                 $this->entityManager->persist($champLiee);
  280.             } else {
  281.                 $formChampEmail $this->manager->getRepository(FormulaireChamp::class)->findOneBy(['nom' => 'contact_email_secure']);
  282.                 if ($formChampEmail != null) {
  283.                     $champLieeEmail $this->manager->getRepository(FormulaireChampLiee::class)->findOneBy(['formulaireChamp' => $formChampEmail'formulaireEtape' => $entity]);
  284.                     if ($champLieeEmail != null) {
  285.                         $this->entityManager->remove($champLieeEmail);
  286.                     }
  287.                 }
  288.                 $formChampTel $this->manager->getRepository(FormulaireChamp::class)->findOneBy(['nom' => 'contact_tel_secure']);
  289.                 if ($formChampTel != null) {
  290.                     $champLieeTel $this->manager->getRepository(FormulaireChampLiee::class)->findOneBy(['formulaireChamp' => $formChampTel'formulaireEtape' => $entity]);
  291.                     if ($champLieeTel != null) {
  292.                         $this->entityManager->remove($champLieeTel);
  293.                     }
  294.                 }
  295.             }
  296.             $entity->setIdImportFormulaire($entity->getFormulaire()->getIdImport());
  297.             $this->entityManager->flush();
  298.         } else if ($entity instanceof FormulaireChampLiee) {
  299.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  300.                 $idSetImport date('YmdHis') . microtime(true) . 'formulaireChampliee' $entity->getId() . "" $entity->getFormulaireEtape()->getId() . "" $entity->getFormulaireEtape()->getFormulaire()->getId() . "" $entity->getFormulaireEtape()->getFormulaire()->getProjet()->getId();
  301.                 $entity->setIdImport(str_replace("."""$idSetImport));
  302.             }
  303.             $entity->setIdImportChamp($entity->getFormulaireChamp()->getIdImport());
  304.             $entity->setIdImportEtape($entity->getFormulaireEtape()->getIdImport());
  305.             $this->entityManager->flush();
  306.         } else if ($entity instanceof FormulaireInput) {
  307.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  308.                 $idSetImport date('YmdHis') . microtime(true) . 'formulaireInput' $entity->getId() . "" $entity->getProjet()->getId();
  309.                 $entity->setIdImport(str_replace("."""$idSetImport));
  310.             }
  311.             $this->entityManager->flush();
  312.         } else if ($entity instanceof FormulaireRecap) {
  313.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  314.                 $idSetImport date('YmdHis') . microtime(true) . 'formulaireRecap' $entity->getId() . "" $entity->getProjet()->getId();
  315.                 $entity->setIdImport(str_replace("."""$idSetImport));
  316.             }
  317.             $this->entityManager->flush();
  318.         } else if ($entity instanceof FormulaireChamp) {
  319.             $entity->setNom($this->slugify($entity->getNom()));
  320.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  321.                 $idSetImport date('YmdHis') . microtime(true) . 'formulaireChamp' $entity->getId() . "" $entity->getFormulaireInput()->getProjet()->getId();
  322.                 $entity->setIdImport(str_replace("."""$idSetImport));
  323.             }
  324.             $entity->setIdImportInput($entity->getFormulaireInput()->getIdImport());
  325.             if ($entity->getFormulaireRecap() != null) {
  326.                 $entity->setIdImportRecap($entity->getFormulaireRecap()->getIdImport());
  327.             }
  328.             $this->entityManager->flush();
  329.         } else if ($entity instanceof FormulaireOption) {
  330.             if ($entity->getIdImport() == null || $entity->getIdImport() == '') {
  331.                 $idSetImport date('YmdHis') . microtime(true) . 'formulaireOption' $entity->getId() . "" $entity->getFormulaireChamp()->getId();
  332.                 $entity->setIdImport(str_replace("."""$idSetImport));
  333.             }
  334.             $entity->setIdImportChamp($entity->getFormulaireChamp()->getIdImport());
  335.             $this->entityManager->flush();
  336.         } else {
  337.             return;
  338.         }
  339.     }
  340.     public function slugify($string)
  341.     {
  342.         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')), '-'));
  343.     }
  344. }