<?php
namespace Entrepreneurs\Bundle\FrontBundle\Form;
use Entrepreneurs\Bundle\AppBundle\Propel\Discussion;
use Entrepreneurs\Bundle\AppBundle\Propel\EvaluationJeune;
use Entrepreneurs\Bundle\AppBundle\Propel\FutureProject;
use Entrepreneurs\Bundle\AppBundle\Propel\Job;
use Propel\Bundle\PropelBundle\Form\Type\ModelType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\Count;
use Symfony\Component\Validator\Constraints\NotBlank;
use Twig\Environment;
class EvaluationJeuneType extends AbstractType
{
public function __construct(private Environment $twig)
{
}
public function buildForm(FormBuilderInterface $builder, array $options): FormBuilderInterface
{
$choices = [
'1' => '1',
'2' => '2',
'3' => '3',
'4' => '4',
];
$choicesBinaire = [
'Oui' => 'Oui',
'Non' => 'Non',
];
$choicesYeNoMaybe = [
'Oui' => 'Oui',
'Non' => 'Non',
'Je ne sais pas' => 'Je ne sais pas',
];
$choicesYesNoNotMentionned = [
'Oui' => 'Oui',
'Non' => 'Non',
"N'a pas été évoqué" => "N'a pas été évoqué",
];
$genders = EvaluationJeune::NOT_CUSTOM_GENDER;
$choicesGender = array_combine($genders, $genders);
$choicesPreparation = [
"En classe avec l'enseignant" => "En classe avec l'enseignant",
'On a fait des recherches sur internet ' => 'On a fait des recherches sur internet ',
"Autres (documents fournis par l'entrepreneur, ....)" => "Autres (documents fournis par l'entrepreneur, ....)",
'Intervention non préparée' => 'Intervention non préparée',
];
$isAura = $options['isAura'];
$builder
->add('gender', ChoiceType::class, [
'label' => 'Quel est votre genre ?',
'choices' => $choicesGender,
'expanded' => true,
'attr' => ['placeholder' => ''],
'required' => true,
'constraints' => new NotBlank(),
])
->add('wanted_to_undertake', ChoiceType::class, [
'label' => "Avant ce témoignage avais-tu envie d'entreprendre (monter un projet, t'engager dans une action...) ?",
'choices' => $choicesYeNoMaybe,
'expanded' => true,
'attr' => ['placeholder' => ''],
'required' => true,
'constraints' => new NotBlank(),
])->add('accessibility', ChoiceType::class, [
'label' => "Tu as trouvé le parcours de l'intervenant.e : Accessible (je peux le faire)",
'choices' => $choices,
'attr' => ['placeholder' => ''],
'required' => true,
'data' => 3,
'constraints' => new NotBlank(),
])->add('important', ChoiceType::class, [
'label' => "Enrichissant (j'ai appris des choses)",
'choices' => $choices,
'attr' => ['placeholder' => ''],
'required' => true,
'data' => 3,
'constraints' => new NotBlank(),
])->add('inspiring', ChoiceType::class, [
'label' => 'Inspirant (ça me met en mouvement)',
'choices' => $choices,
'required' => true,
'data' => 3,
'attr' => ['placeholder' => ''],
'constraints' => new NotBlank(),
])
->add('clarity', ChoiceType::class, [
'label' => 'Le fonctionnement du monde professionnel et ses codes est-il plus clair pour toi ?',
'choices' => $choicesBinaire,
'expanded' => true,
'required' => true,
'attr' => ['placeholder' => ''],
'constraints' => new NotBlank(),
])
->add('discovery', ChoiceType::class, [
'label' => 'As-tu découvert un/des métier(s) ou secteur(s) que tu ne connaissais pas ?',
'choices' => $choicesBinaire,
'expanded' => true,
'required' => true,
'attr' => ['placeholder' => ''],
'constraints' => new NotBlank(),
]);
if ($isAura) {
$builder
->add('before_action', ChoiceType::class, [
'label' => "Avant l'action, avais-tu déjà une idée de métier qui t'intéressait ?",
'choices' => $choicesBinaire,
'expanded' => true,
'required' => true,
'attr' => ['placeholder' => ''],
'constraints' => new NotBlank(),
])
->add('Jobs', ModelType::class, [
'class' => Job::class,
'label' => 'Si oui, le(s)quel(s) ?',
'attr' => ['placeholder' => ''],
'required' => false,
'expanded' => true,
'multiple' => true,
'choice_label' => fn (Job $job) => $this->twig->createTemplate('{{ couleur|couleur_icon }}')
->render(['couleur' => $job->getCouleur()])
.' '.$job->getLabel(),
])
->add('discover_more', ChoiceType::class, [
'label' => "t'a donné envie de le(s) découvrir davantage ?",
'choices' => $choices,
'required' => true,
'data' => 3,
'attr' => ['placeholder' => ''],
'constraints' => new NotBlank(),
])
->add('idea_precision', TextType::class, [
'label' => 'Une idée de métier encore plus précise peut être ?!',
'required' => true,
'constraints' => new NotBlank(),
])
->add('orientation_impact', ChoiceType::class, [
'label' => "Cette action a-t-elle eu un impact sur ton projet d'orientation ? (renforcé ou modifié)",
'choices' => $choicesBinaire,
'expanded' => true,
'attr' => ['placeholder' => ''],
'required' => true,
'constraints' => new NotBlank(),
])
->add('information', TextType::class, [
'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 ? ...)",
'required' => true,
'constraints' => new NotBlank(),
])
->add('Discussions', ModelType::class, [
'class' => Discussion::class,
'label' => 'Maintenant, avec qui vas-tu parler de cette action ?',
'attr' => ['placeholder' => ''],
'constraints' => [
new Count([
'min' => 1,
'minMessage' => 'Veuillez sélectionner au moins une option.',
]),
],
'expanded' => true,
'multiple' => true,
])
;
}
$builder
->add('understand_interest_pro', ChoiceType::class, [
'label' => "Comprends-tu mieux l'intérêt des matières enseignées à l'école pour ta vie professionnelle future ?",
'choices' => $choicesYesNoNotMentionned,
'expanded' => true,
'required' => true,
'attr' => ['placeholder' => ''],
'constraints' => new NotBlank(),
])->add('world_transformation', ChoiceType::class, [
'label' => "Les transformations du monde d'aujourd'hui et de demain sont-ils plus clairs pour toi ?",
'choices' => $choicesYesNoNotMentionned,
'expanded' => true,
'attr' => ['placeholder' => ''],
'required' => true,
'constraints' => new NotBlank(),
])->add('preparation', ChoiceType::class, [
'label' => "Comment as tu préparé l'intervention avant la venue de l'entrepreneur ? ",
'choices' => $choicesPreparation,
'expanded' => true,
'attr' => ['placeholder' => ''],
'required' => true,
'constraints' => new NotBlank(),
])->add('understand_vocabulary', ChoiceType::class, [
'label' => "As-tu compris le vocabulaire utilisé par l'intervenant.e ?",
'choices' => $choices,
'data' => 3,
'attr' => ['placeholder' => ''],
'required' => true,
'constraints' => new NotBlank(),
])->add('trust', ChoiceType::class, [
'label' => "T'es-tu senti en confiance pour échanger avec l'intervenant.e ?",
'choices' => $choices,
'data' => 3,
'attr' => ['placeholder' => ''],
'required' => true,
'constraints' => new NotBlank(),
])->add('appreciated', TextType::class, [
'label' => "Qu'est-ce que tu as le plus apprécié lors de cette rencontre ?",
'required' => true,
'attr' => ['placeholder' => ''],
'constraints' => new NotBlank(),
])->add('want_more', ChoiceType::class, [
'label' => 'Aimerais-tu assister à une nouvelle rencontre de ce type ?',
'choices' => $choicesBinaire,
'expanded' => true,
'attr' => ['placeholder' => ''],
'required' => true,
'constraints' => new NotBlank(),
])->add('trust_future', ChoiceType::class, [
'label' => "Est-ce que cela t'a donné confiance dans ton avenir professionnel ?",
'choices' => $choices,
'data' => 3,
'attr' => ['placeholder' => ''],
'required' => true,
'constraints' => new NotBlank(),
])->add('project_ability', ChoiceType::class, [
'label' => 'Te sens-tu plus capable de te lancer dans un projet qui te tient à cœur ?',
'choices' => $choicesYeNoMaybe,
'expanded' => true,
'required' => true,
'attr' => ['placeholder' => ''],
'constraints' => new NotBlank(),
])
->add('FutureProjects', ModelType::class, [
'class' => FutureProject::class,
'label' => "Pour mon projet professionnel futur, j'ai compris qu'il est important de travailler sur : ",
'attr' => ['placeholder' => ''],
'constraints' => [
new Count([
'min' => 1,
'minMessage' => 'Veuillez sélectionner au moins une option.',
]),
],
'expanded' => true,
'multiple' => true,
]);
return $builder;
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults(
[
'data_class' => EvaluationJeune::class,
'isAura' => null,
]
);
}
public function getBlockPrefix(): string
{
return 'evaluation_jeune';
}
}