<?php
namespace App\Form;
use App\Entity\Rank;
use App\Entity\Respondent;
use App\Entity\User;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class UserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$respondent = $options['respondent'];
$rank = null;
if ($respondent) {
$rank = $respondent->getRank();
}
$builder
->add('email', EmailType::class, [
'label' => 'Quelle est votre adresse email ?',
'required' => true,
])
->add('firstName', TextType::class, [
'label' => 'Quel est votre prénom ?',
'required' => true,
])
->add('lastName', TextType::class, [
'label' => 'Quel est votre nom ?',
'required' => true,
])
->add('poste', TextType::class, [
'label' => 'Quel est votre poste ?',
'required' => true,
])
->add('age', ChoiceType::class, [
'label' => "Quelle est votre tranche d'âge ?",
'choices' => [
'Moins de 25 ans' => User::AGE_25,
'Entre 25 et 35 ans' => User::AGE_25_35,
'Entre 35 et 45 ans' => User::AGE_35_45,
'Entre 45 et 55 ans' => User::AGE_45_55,
'Plus de 55 ans' => User::AGE_55,
],
'required' => false,
])
->add('level', ChoiceType::class, [
'label' => "Quel est votre niveau d'étude ?",
'choices' => [
'BAC (ou inférieur)' => User::LEVEL_BAC,
'BAC+2' => User::LEVEL_BAC2,
'BAC+3' => User::LEVEL_BAC3,
'BAC+4' => User::LEVEL_BAC4,
'BAC+5 (ou supérieur)' => User::LEVEL_BAC5,
],
'required' => false,
])
->add('diplome', TextType::class, [
'label' => 'Quel est votre diplôme ?',
'help' => 'Votre diplôme le plus élevé.',
'required' => false,
])
->add('initialTrained', ChoiceType::class, [
'label' => "Dans le cadre de votre formation initiale avez-vous suivi des formations management ?",
'choices' => [
'Non' => false,
'Oui' => true
],
'required' => true,
'expanded' => true,
'multiple' => false,
// 'empty_data' => 0
])
->add('alreadyTrained', ChoiceType::class, [
'label' => "Avez-vous déjà suivi une formation en management au cours de votre parcours professionnel ?",
'help' => 'CNFPT/ autres organismes ...',
'choices' => [
'Non' => false,
'Oui' => true
],
'required' => true,
'expanded' => true,
'multiple' => false,
// 'empty_data' => 0
])
->add('rank', EntityType::class, [
'label' => 'Quel est votre niveau de management ?',
'class' => Rank::class,
'required' => true,
'expanded' => false,
'multiple' => false,
'mapped' => false,
'data' => $rank,
'choice_label' => 'name',
// todo : enlever cette condition 'choice_attr' quand il ya aura les 3 questionnaires
'choice_attr' => function($choice, $key, $value) {
$disabledIds = [2, 3];
// Vérifier si l'option est dans la liste des désactivées
if (in_array($choice->getId(), $disabledIds)) {
return ['disabled' => 'disabled']; // Ajouter l'attribut disabled pour ces options
}
return []; // Si l'option n'est pas désactivée, on retourne un tableau vide
},
])
->add('experience', IntegerType::class, [
'label' => 'Quel est votre experience dans la famille managériale sélectionnée ?',
'required' => false,
'help' => "En nombre d'année",
'empty_data' => 0
])
->add('nbManaged', ChoiceType::class, [
'label' => "Combien de personnes managez-vous ?",
'choices' => [
'Moins de 10 personnes' => User::NB_MANAGED_10,
'Entre 10 et 20 personnes' => User::NB_MANAGED_10_20,
'Entre 20 et 30 personnes' => User::NB_MANAGED_20_30,
'Plus de 30 personnes' => User::NB_MANAGED_30,
],
'required' => false,
])
;
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => User::class,
'respondent' => null
]);
}
}