src/Form/Type/DepotAnnonce/ValidatorTypeAcquereur.php line 65

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4.  * @Description: validation dynamique depot annonce  acquisition : type acquereur perrsonne / societe
  5.  * @author Mehrez Labidi
  6.  */
  7. namespace App\Form\Type\DepotAnnonce;
  8. use App\Services\API\ClientAPI;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. use App\Validator\Constraints\Annee;
  11. use App\Validator\Constraints\Montant;
  12. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  13. use Symfony\Component\Form\Extension\Core\Type\TextType;
  14. use Symfony\Component\Form\FormEvent;
  15. use Symfony\Component\Form\FormEvents;
  16. use Symfony\Component\Validator\Constraints as Assert;
  17. use Symfony\Component\Validator\Constraints\NotBlank;
  18. use App\Form\Type\FormChoices;
  19. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  20. use App\Form\DataTransformer\DataAnnonceTransformer;
  21.  
  22. class ValidatorTypeAcquereur implements EventSubscriberInterface {
  23.     /**
  24.      * 
  25.      * @var type
  26.      */
  27.     private $clientAPI;
  28.     /**
  29.      * @var DataAnnonceTransformer
  30.      */
  31.     private $dataAnnonceTransformer;
  32.      public function __construct(   DataAnnonceTransformer $dataAnnonceTransformer,clientAPI $clientAPI    ) {
  33.              $this->dataAnnonceTransformer $dataAnnonceTransformer;
  34.         $this->clientAPI $clientAPI;
  35.     }
  36.     /**
  37.      * @return string[]
  38.      */
  39.     public static function getSubscribedEvents(): array {
  40.         return [
  41.             FormEvents::PRE_SET_DATA => 'onPreSetData',
  42.             FormEvents::PRE_SUBMIT => 'onPreSubmit'
  43.         ];
  44.     }
  45.     /**
  46.      * 
  47.      * @param FormEvent $event
  48.      * @return void
  49.      */
  50.     public function onPreSetData(FormEvent $event): void {
  51.         $this->validation($event);
  52.     }
  53.     /**
  54.      * 
  55.      * @param FormEvent $event
  56.      * @return void
  57.      */
  58.     public function onPreSubmit(FormEvent $event): void {
  59.         $this->validation($event);
  60.     }
  61.     /**
  62.      * 
  63.      * @param type $event
  64.      */
  65.     private function validation($event) {
  66.         $user $event->getData();
  67.         $form $event->getForm();
  68.         if (!empty($user['type_acquereur'])) {
  69.             //  secteur_activite : 3 niveaux
  70.             $secteurActivite1 FormChoices::selectionnerChoisir() + array_combine(
  71.                             array_column($this->clientAPI->secteurActiviteFusacq(0), "nom_secteur_activite"),
  72.                             array_column($this->clientAPI->secteurActiviteFusacq(0), "id_secteur_activite")
  73.             );
  74.             //  la liste depend est un retour API 
  75.       $form->add('id_secteur_activite1'ChoiceType::class,
  76.                         [
  77.                             'required' => true,
  78.                             "constraints" => [new NotBlank(["message" => "Le champ secteur d'activite est obligatoire"])],
  79.                             "choices" => $secteurActivite1,
  80.                             "attr" => ["autocomplete" => "off"]
  81.                         ]) ;
  82.             //  la liste depend du choix  id_secteur_activite1
  83. //            $form->add('id_secteur_activite2', ChoiceType::class,
  84. //                    [
  85. //                        'required' => false,
  86. //                        "choices" => [],
  87. //                        "attr" => ["autocomplete" => "off"]
  88. //                    ]
  89. //            )->addEventSubscriber(new SecteurActivite2Listener($this->secteursActiviteManagers));
  90. //
  91. //            //  la liste depend du choix  id_secteur_activite2
  92. //            $form->add('id_secteur_activite3',
  93. //                    ChoiceType::class,
  94. //                    [
  95. //                        'required' => false,
  96. //                        "choices" => [],
  97. //                        "attr" => ["autocomplete" => "off"]
  98. //                    ]
  99. //            )->addEventSubscriber(new SecteurActivite3Listener($this->secteursActiviteManagers));
  100.             if ($user['type_acquereur'] == "personne") {
  101.                 $form->add('date_creation_societe'TextType::class, ["constraints" => [new Annee()], "attr" => ["autocomplete" => "off"]]);
  102.                 $form->add('ca_societe'TextType::class,
  103.                         [
  104.                             "required" => true,
  105.                             "constraints" => [
  106.                                 new Assert\Length(['max' => 100'maxMessage' => "Le champ Chiffre d'affaires est trop long"])
  107.                             ], "attr" => ["autocomplete" => "off"]
  108.                 ]);
  109.                 // obligatoire
  110.                 $form->add('annee_naissance_repreneur'TextType::class, [
  111.                     "constraints" => [
  112.                         new Annee(),
  113.                         new NotBlank(["message" => "Le champ année de naissance repreneur est obligatoire"])],
  114.                     "attr" => ["autocomplete" => "off"]
  115.                 ]);
  116.                 // obligatoire
  117.                 $form->add('apport_perso_repreneur'TextType::class,
  118.                         ["constraints" =>
  119.                             [
  120.                                 new NotBlank(["message" => "Le champ montant de l'apport personnel du repreneur est obligatoire"])
  121.                             ], "attr" => ["autocomplete" => "off"]
  122.                 ]);
  123.                 // obligatoire
  124.                 $form->add('formation_repreneur'TextareaType::class,
  125.                         [
  126.                             "constraints" => [
  127.                                 new NotBlank(["message" => "Le champ formation du repreneur est obligatoire"]),
  128.                                 new Assert\Length(['max' => 3000'maxMessage' => "Le champ   Formation Repreneur  est  trop long "])
  129.                             ],
  130.                             "attr" => ["rows" => 8"placeholder" => """autocomplete" => "off"]
  131.                         ]
  132.                 );
  133.                 // obligatoire
  134.                 $form->add('parcours_pro_repreneur'TextareaType::class,
  135.                         [
  136.                             "constraints" => [
  137.                                 new NotBlank(["message" => "Le champ Parcours professionnel du repreneur est obligatoire"]),
  138.                                 new Assert\Length(['max' => 3000'maxMessage' => "Le champ   Parcours Pro Repreneur  est  trop long "])
  139.                             ],
  140.                             "attr" => ["rows" => 8"placeholder" => """autocomplete" => "off"]
  141.                         ]
  142.                 );
  143.                 $form->add('res_net_societe'TextType::class,
  144.                         [
  145.                             "required" => true,
  146.                             "constraints" => [
  147.                                 new Assert\Length(['max' => 100'maxMessage' => "Le champ Résultat Net est trop long"])
  148.                             ], "attr" => ["autocomplete" => "off"]
  149.                 ]);
  150.                 $form->add('nb_personnes_societe'TextType::class,
  151.                         [
  152.                             "required" => true,
  153.                             "constraints" => [
  154.                                 new Assert\Length(['max' => 100'maxMessage' => "Le champ Nombre de collaborateurs est trop long"])
  155.                             ], "attr" => ["autocomplete" => "off"]
  156.                 ]);
  157.                 $form->add('description_activite_societe'TextareaType::class,
  158.                         ["constraints" => [
  159.                                 new Assert\Length(['max' => 3000'maxMessage' => "Le champ description de l'activite societe est trop long"]),
  160.                             ],
  161.                             "attr" => ["rows" => 8"placeholder" => """autocomplete" => "off"]
  162.                 ]);
  163.             }
  164.             if ($user['type_acquereur'] == "societe") {
  165.                 $form->add('description_activite_societe'TextareaType::class,
  166.                         ["constraints" => [
  167.                                 new Assert\Length(['max' => 3000'maxMessage' => "Le champ description de l'activite societe est trop long"]),
  168.                                 new NotBlank(["message" => "Le champ description de l'activite societe est obligatoire"])],
  169.                             "attr" => ["rows" => 8"placeholder" => """autocomplete" => "off"]
  170.                         ]
  171.                 );
  172. // obligatoire
  173.                 $form->add('res_net_societe'TextType::class,
  174.                         [
  175.                             "required" => true,
  176.                             "constraints" => [
  177.                         
  178.                                 new Assert\Length(['max' => 100'maxMessage' => "Le champ Résultat Net est trop long"])
  179.                             ], "attr" => ["autocomplete" => "off"]
  180.                 ]);
  181.                 // obligatoire
  182.                 $form->add('date_creation_societe'TextType::class,
  183.                         [
  184.                             "constraints" => [
  185.                                 new Annee(),
  186.                                 new NotBlank(["message" => "Le champ date création de la societe est obligatoire"]),
  187.                             ],
  188.                             "attr" => ["autocomplete" => "off"]
  189.                         ]
  190.                 );
  191.                 $form->add('annee_naissance_repreneur'TextType::class, [
  192.                     "constraints" => [
  193.                         new Annee(),
  194.                     ],
  195.                     "attr" => ["autocomplete" => "off"]
  196.                 ]);
  197.                 // obligatoire
  198.                 $form->add('ca_societe'TextType::class,
  199.                         [
  200.                             "required" => true,
  201.                             "constraints" => [
  202.                                 new NotBlank(["message" => "Le champ Chiffre d'affaire societé est obligatoire"]),
  203.                                 new Assert\Length(['max' => 100'maxMessage' => "Le champ CA est trop long"])
  204.                             ], "attr" => ["autocomplete" => "off"]
  205.                 ]);
  206.                 $form->add('nb_personnes_societe'TextType::class,
  207.                         [
  208.                             "required" => true,
  209.                             "constraints" => [
  210.                                 new NotBlank(["message" => "Le champ nombre de collaborateurs est obligatoire"]),
  211.                                 new Assert\Length(['max' => 100'maxMessage' => "Le champ nombre de collaborateurs est trop long"])
  212.                             ], "attr" => ["autocomplete" => "off"]
  213.                 ]);
  214.                 // obligatoire
  215.                 $form->add('description_activite_societe'TextareaType::class,
  216.                         [
  217.                             "constraints" => [
  218.                                 new NotBlank(["message" => "Le champ description de l'activite de la societe est obligatoire"]),
  219.                                 new Assert\Length(['max' => 3000'maxMessage' => "Le champ description de l'activite de la societe est  trop long "])
  220.                             ],
  221.                             "attr" => ["rows" => 8"placeholder" => """autocomplete" => "off"]
  222.                         ]
  223.                 );
  224.                 $form->add('nb_personnes_societe'TextType::class,
  225.                         [
  226.                             "required" => true,
  227.                             "constraints" => [
  228.                                 new NotBlank(["message" => "Le champ Nombre de collaborateurs est obligatoire"]),
  229.                                 new Assert\Length(['max' => 100'maxMessage' => "Le champ Nombre de collaborateurs est trop long"])
  230.                             ], "attr" => ["autocomplete" => "off"]
  231.                 ]);
  232.             }
  233.         }
  234.     }
  235. }