src/Entrepreneurs/Bundle/FrontBundle/Form/EvaluationJeuneType.php line 19

Open in your IDE?
  1. <?php
  2. namespace Entrepreneurs\Bundle\FrontBundle\Form;
  3. use Entrepreneurs\Bundle\AppBundle\Propel\Discussion;
  4. use Entrepreneurs\Bundle\AppBundle\Propel\EvaluationJeune;
  5. use Entrepreneurs\Bundle\AppBundle\Propel\FutureProject;
  6. use Entrepreneurs\Bundle\AppBundle\Propel\Job;
  7. use Propel\Bundle\PropelBundle\Form\Type\ModelType;
  8. use Symfony\Component\Form\AbstractType;
  9. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  10. use Symfony\Component\Form\Extension\Core\Type\TextType;
  11. use Symfony\Component\Form\FormBuilderInterface;
  12. use Symfony\Component\OptionsResolver\OptionsResolver;
  13. use Symfony\Component\Validator\Constraints\Count;
  14. use Symfony\Component\Validator\Constraints\NotBlank;
  15. use Twig\Environment;
  16. class EvaluationJeuneType extends AbstractType
  17. {
  18.     public function __construct(private Environment $twig)
  19.     {
  20.     }
  21.     public function buildForm(FormBuilderInterface $builder, array $options): FormBuilderInterface
  22.     {
  23.         $choices = [
  24.             '1' => '1',
  25.             '2' => '2',
  26.             '3' => '3',
  27.             '4' => '4',
  28.         ];
  29.         $choicesBinaire = [
  30.             'Oui' => 'Oui',
  31.             'Non' => 'Non',
  32.         ];
  33.         $choicesYeNoMaybe = [
  34.             'Oui' => 'Oui',
  35.             'Non' => 'Non',
  36.             'Je ne sais pas' => 'Je ne sais pas',
  37.         ];
  38.         $choicesYesNoNotMentionned = [
  39.             'Oui' => 'Oui',
  40.             'Non' => 'Non',
  41.             "N'a pas été évoqué" => "N'a pas été évoqué",
  42.         ];
  43.         $genders EvaluationJeune::NOT_CUSTOM_GENDER;
  44.         $choicesGender array_combine($genders$genders);
  45.         $choicesPreparation = [
  46.             "En classe avec l'enseignant" => "En classe avec l'enseignant",
  47.             'On a fait des recherches sur internet ' => 'On a fait des recherches sur internet ',
  48.             "Autres (documents fournis par l'entrepreneur, ....)" => "Autres (documents fournis par l'entrepreneur, ....)",
  49.             'Intervention non préparée' => 'Intervention non préparée',
  50.         ];
  51.         $isAura $options['isAura'];
  52.         $builder
  53.         ->add('gender'ChoiceType::class, [
  54.             'label' => 'Quel est votre genre ?',
  55.             'choices' => $choicesGender,
  56.             'expanded' => true,
  57.             'attr' => ['placeholder' => ''],
  58.             'required' => true,
  59.             'constraints' => new NotBlank(),
  60.         ])
  61.         ->add('wanted_to_undertake'ChoiceType::class, [
  62.             'label' => "Avant ce témoignage avais-tu envie d'entreprendre (monter un projet, t'engager dans une action...) ?",
  63.             'choices' => $choicesYeNoMaybe,
  64.             'expanded' => true,
  65.             'attr' => ['placeholder' => ''],
  66.             'required' => true,
  67.             'constraints' => new NotBlank(),
  68.         ])->add('accessibility'ChoiceType::class, [
  69.             'label' => "Tu as trouvé le parcours de l'intervenant.e : Accessible (je peux le faire)",
  70.             'choices' => $choices,
  71.             'attr' => ['placeholder' => ''],
  72.             'required' => true,
  73.             'data' => 3,
  74.             'constraints' => new NotBlank(),
  75.         ])->add('important'ChoiceType::class, [
  76.             'label' => "Enrichissant (j'ai appris des choses)",
  77.             'choices' => $choices,
  78.             'attr' => ['placeholder' => ''],
  79.             'required' => true,
  80.                 'data' => 3,
  81.             'constraints' => new NotBlank(),
  82.         ])->add('inspiring'ChoiceType::class, [
  83.             'label' => 'Inspirant (ça me met en mouvement)',
  84.             'choices' => $choices,
  85.             'required' => true,
  86.                 'data' => 3,
  87.             'attr' => ['placeholder' => ''],
  88.             'constraints' => new NotBlank(),
  89.         ])
  90.         ->add('clarity'ChoiceType::class, [
  91.             'label' => 'Le fonctionnement du monde professionnel et ses codes est-il plus clair pour toi ?',
  92.             'choices' => $choicesBinaire,
  93.             'expanded' => true,
  94.             'required' => true,
  95.             'attr' => ['placeholder' => ''],
  96.             'constraints' => new NotBlank(),
  97.         ])
  98.         ->add('discovery'ChoiceType::class, [
  99.             'label' => 'As-tu découvert un/des métier(s) ou secteur(s) que tu ne connaissais pas ?',
  100.             'choices' => $choicesBinaire,
  101.             'expanded' => true,
  102.             'required' => true,
  103.             'attr' => ['placeholder' => ''],
  104.             'constraints' => new NotBlank(),
  105.         ]);
  106.         if ($isAura) {
  107.             $builder
  108.                 ->add('before_action'ChoiceType::class, [
  109.                     'label' => "Avant l'action, avais-tu déjà une idée de métier qui t'intéressait ?",
  110.                     'choices' => $choicesBinaire,
  111.                     'expanded' => true,
  112.                     'required' => true,
  113.                     'attr' => ['placeholder' => ''],
  114.                     'constraints' => new NotBlank(),
  115.                     ])
  116.                 ->add('Jobs'ModelType::class, [
  117.                     'class' => Job::class,
  118.                     'label' => 'Si oui, le(s)quel(s) ?',
  119.                     'attr' => ['placeholder' => ''],
  120.                     'required' => false,
  121.                     'expanded' => true,
  122.                     'multiple' => true,
  123.                     'choice_label' => fn (Job $job) => $this->twig->createTemplate('{{ couleur|couleur_icon }}')
  124.                             ->render(['couleur' => $job->getCouleur()])
  125.                         .' '.$job->getLabel(),
  126.                 ])
  127.                 ->add('discover_more'ChoiceType::class, [
  128.                     'label' => "t'a donné envie de le(s) découvrir davantage ?",
  129.                     'choices' => $choices,
  130.                     'required' => true,
  131.                     'data' => 3,
  132.                     'attr' => ['placeholder' => ''],
  133.                     'constraints' => new NotBlank(),
  134.                 ])
  135.                 ->add('idea_precision'TextType::class, [
  136.                     'label' => 'Une idée de métier encore plus précise peut être ?!',
  137.                     'required' => true,
  138.                     'constraints' => new NotBlank(),
  139.                 ])
  140.                 ->add('orientation_impact'ChoiceType::class, [
  141.                     'label' => "Cette action a-t-elle eu un impact sur ton projet d'orientation ? (renforcé ou modifié)",
  142.                     'choices' => $choicesBinaire,
  143.                     'expanded' => true,
  144.                     'attr' => ['placeholder' => ''],
  145.                     'required' => true,
  146.                     'constraints' => new NotBlank(),
  147.                 ])
  148.                 ->add('information'TextType::class, [
  149.                     'label' => "Maintenant, comment penses-tu t'informer sur les métiers et les formations ? (ex : auprès de ton entourage ? dans un CIO ? sur un site Internet en particulier ? lors d'un forum des métiers ? ...)",
  150.                     'required' => true,
  151.                     'constraints' => new NotBlank(),
  152.                 ])
  153.                 ->add('Discussions'ModelType::class, [
  154.                     'class' => Discussion::class,
  155.                     'label' => 'Maintenant, avec qui vas-tu parler de cette action ?',
  156.                     'attr' => ['placeholder' => ''],
  157.                     'constraints' => [
  158.                         new Count([
  159.                             'min' => 1,
  160.                             'minMessage' => 'Veuillez sélectionner au moins une option.',
  161.                         ]),
  162.                     ],
  163.                     'expanded' => true,
  164.                     'multiple' => true,
  165.                 ])
  166.             ;
  167.         }
  168.         $builder
  169.         ->add('understand_interest_pro'ChoiceType::class, [
  170.             'label' => "Comprends-tu mieux l'intérêt des matières enseignées à l'école pour ta vie professionnelle future ?",
  171.             'choices' => $choicesYesNoNotMentionned,
  172.             'expanded' => true,
  173.             'required' => true,
  174.             'attr' => ['placeholder' => ''],
  175.             'constraints' => new NotBlank(),
  176.         ])->add('world_transformation'ChoiceType::class, [
  177.             'label' => "Les transformations du monde d'aujourd'hui et de demain sont-ils plus clairs pour toi ?",
  178.             'choices' => $choicesYesNoNotMentionned,
  179.             'expanded' => true,
  180.             'attr' => ['placeholder' => ''],
  181.             'required' => true,
  182.             'constraints' => new NotBlank(),
  183.         ])->add('preparation'ChoiceType::class, [
  184.             'label' => "Comment as tu préparé l'intervention avant la venue de l'entrepreneur ? ",
  185.             'choices' => $choicesPreparation,
  186.             'expanded' => true,
  187.             'attr' => ['placeholder' => ''],
  188.             'required' => true,
  189.             'constraints' => new NotBlank(),
  190.         ])->add('understand_vocabulary'ChoiceType::class, [
  191.             'label' => "As-tu compris le vocabulaire utilisé par l'intervenant.e ?",
  192.             'choices' => $choices,
  193.             'data' => 3,
  194.             'attr' => ['placeholder' => ''],
  195.             'required' => true,
  196.             'constraints' => new NotBlank(),
  197.         ])->add('trust'ChoiceType::class, [
  198.             'label' => "T'es-tu senti en confiance pour échanger avec l'intervenant.e ?",
  199.             'choices' => $choices,
  200.             'data' => 3,
  201.             'attr' => ['placeholder' => ''],
  202.             'required' => true,
  203.             'constraints' => new NotBlank(),
  204.         ])->add('appreciated'TextType::class, [
  205.             'label' => "Qu'est-ce que tu as le plus apprécié lors de cette rencontre ?",
  206.             'required' => true,
  207.             'attr' => ['placeholder' => ''],
  208.             'constraints' => new NotBlank(),
  209.         ])->add('want_more'ChoiceType::class, [
  210.             'label' => 'Aimerais-tu assister à une nouvelle rencontre de ce type ?',
  211.             'choices' => $choicesBinaire,
  212.             'expanded' => true,
  213.             'attr' => ['placeholder' => ''],
  214.             'required' => true,
  215.             'constraints' => new NotBlank(),
  216.         ])->add('trust_future'ChoiceType::class, [
  217.             'label' => "Est-ce que cela t'a donné confiance dans ton avenir professionnel ?",
  218.             'choices' => $choices,
  219.             'data' => 3,
  220.             'attr' => ['placeholder' => ''],
  221.             'required' => true,
  222.             'constraints' => new NotBlank(),
  223.         ])->add('project_ability'ChoiceType::class, [
  224.             'label' => 'Te sens-tu plus capable de te lancer dans un projet qui te tient à cœur ?',
  225.             'choices' => $choicesYeNoMaybe,
  226.             'expanded' => true,
  227.             'required' => true,
  228.             'attr' => ['placeholder' => ''],
  229.             'constraints' => new NotBlank(),
  230.         ])
  231.         ->add('FutureProjects'ModelType::class, [
  232.             'class' => FutureProject::class,
  233.             'label' => "Pour mon projet professionnel futur, j'ai compris qu'il est important de travailler sur :  ",
  234.             'attr' => ['placeholder' => ''],
  235.            'constraints' => [
  236.                new Count([
  237.                    'min' => 1,
  238.                    'minMessage' => 'Veuillez sélectionner au moins une option.',
  239.                ]),
  240.            ],
  241.             'expanded' => true,
  242.             'multiple' => true,
  243.         ]);
  244.         return $builder;
  245.     }
  246.     public function configureOptions(OptionsResolver $resolver): void
  247.     {
  248.         $resolver->setDefaults(
  249.             [
  250.                 'data_class' => EvaluationJeune::class,
  251.                 'isAura' => null,
  252.             ]
  253.         );
  254.     }
  255.     public function getBlockPrefix(): string
  256.     {
  257.         return 'evaluation_jeune';
  258.     }
  259. }