src/EventSubscriber/FormulaireSubscriber.php line 242

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