src/Form/Formations/Plannings/PlanningsFormationsModifyFormType.php line 189

Open in your IDE?
  1. <?php
  2. namespace App\Form\Formations\Plannings;
  3. use App\Entity\Formateurs;
  4. use App\Entity\PlanningsFormations;
  5. use App\Entity\Salles;
  6. use App\Repository\FormateursRepository;
  7. use App\Repository\PlanningsFormationsRepository;
  8. use App\Repository\SitesRepository;
  9. use Doctrine\ORM\EntityRepository;
  10. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  11. use Symfony\Component\Form\AbstractType;
  12. use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
  13. use Symfony\Component\Form\Extension\Core\Type\DateType;
  14. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  15. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  16. use Symfony\Component\Form\Extension\Core\Type\TextType;
  17. use Symfony\Component\Form\Extension\Core\Type\TimeType;
  18. use Symfony\Component\Form\FormBuilderInterface;
  19. use Symfony\Component\OptionsResolver\OptionsResolver;
  20. class PlanningsFormationsModifyFormType extends AbstractType
  21. {
  22.     private $planning;
  23.     private $formateur;
  24.     private $site;
  25.     public function __construct(
  26.         PlanningsFormationsRepository $planningsFormationsRepository
  27.         FormateursRepository $formateursRepository
  28.         SitesRepository $sitesRepository
  29.         )
  30.     {
  31.         $this->planning $planningsFormationsRepository;
  32.         $this->formateur $formateursRepository;
  33.         $this->site $sitesRepository;
  34.     }
  35.     
  36.     
  37.     public function buildForm(FormBuilderInterface $builder, array $options): void
  38.     {
  39.         $idSite $options['idSite'];
  40.                
  41.         $idPlanning $options['idPlanning'];
  42.         $formateurListe $this->planning->find($idPlanning)->getFormateur();
  43.         $formateur $formateurListe->getNom().' '.$formateurListe->getPrenom().' ('.$formateurListe->getDiscipline()->getIntitule().')';
  44.         $site $this->site->find($idSite);
  45.         $idAgence $site->getAgence()->getId();
  46.         
  47.         $builder
  48.             ->add('intitule'TextareaType::class, [
  49.                 // 'mapped' => false,
  50.                 // 'data' => $planningType->getIntitule(),
  51.                 'attr' => [
  52.                     // 'disabled' => true
  53.                     'class' => 'fw-bold',
  54.                     'readonly' => true,
  55.                     'data-bs-toggle' => 'tooltip',
  56.                     'data-bs-placement' => "top",
  57.                     'title' => "Intitulé de la séquence",
  58.                     'rows' => 3
  59.                 ]
  60.             ])
  61.             ->add('duree'TextType::class, [
  62.                 'attr' => [
  63.                     'readonly' => true,
  64.                     'data-bs-toggle' => 'tooltip',
  65.                     'data-bs-placement' => "top",
  66.                     'title' => "Durée de la séquence"
  67.                 ]
  68.             ])
  69.             ->add('domaine'TextType::class, [
  70.                 'attr' => [
  71.                     'readonly' => true,
  72.                     'data-bs-toggle' => 'tooltip',
  73.                     'data-bs-placement' => "top",
  74.                     'title' => "Domaine"
  75.                 ]
  76.             ])
  77.             ->add('dateDebut'DateType::class, [
  78.                 'label' => 'Date et heure de début',
  79.                 // 'mapped' => false,
  80.                 'widget' => 'single_text',
  81.                 'attr' => [
  82.                     'class' => 'bg-dark text-white',
  83.                     'data-bs-toggle' => 'tooltip',
  84.                     'data-bs-placement' => "top",
  85.                     'title' => "Date et heure de début"
  86.                 ]  
  87.             ])
  88.             // ->add('dateFin', DateTimeType::class, [
  89.             //     'label' => 'Date et heure de fin',
  90.             //     // 'mapped' => false,
  91.             //     'widget' => 'single_text',
  92.             //     'attr' => [
  93.             //         'class' => 'bg-dark text-white',
  94.             //         'data-bs-toggle' => 'tooltip',
  95.             //         'data-bs-placement' => "top",
  96.             //         'title' => "Date et heure de fin"
  97.             //     ]  
  98.             // ])
  99.             ->add('matinHoraireDebut'TimeType::class, [
  100.                 'label' => 'Matin - Heure de début',
  101.                 // 'mapped' => false,
  102.                 // 'widget' => 'single_text',
  103.                 'required' => false,
  104.                 'attr' => [
  105.                     // 'value' => ($planningType[$x]->getMatinHoraireDebut()) ? $planningType[$x]->getMatinHoraireDebut()->format('H:i') : '',
  106.                     'class' => 'bg-dark text-white',
  107.                     'data-bs-toggle' => 'tooltip',
  108.                     'data-bs-placement' => "top",
  109.                     'title' => "Matin - Heure de début"
  110.                 ]  
  111.             ])
  112.             ->add('matinHoraireFin'TimeType::class, [
  113.                 'label' => 'Matin - Heure de fin',
  114.                 // 'mapped' => false,
  115.                 // 'widget' => 'single_text',
  116.                 'required' => false,
  117.                 'attr' => [
  118.                     // 'value' => ($planningType[$x]->getMatinHoraireFin()) ? $planningType[$x]->getMatinHoraireFin()->format('H:i') : '',
  119.                     'class' => 'bg-dark text-white',
  120.                     'data-bs-toggle' => 'tooltip',
  121.                     'data-bs-placement' => "top",
  122.                     'title' => "Matin - Heure de fin"
  123.                 ]  
  124.             ])
  125.             ->add('apresMidiHoraireDebut'TimeType::class, [
  126.                 'label' => 'Après-midi - Heure de début',
  127.                 // 'mapped' => false,
  128.                 // 'widget' => 'single_text',
  129.                 'required' => false,
  130.                 'attr' => [
  131.                     // 'value' => ($planningType[$x]->getApresMidiHoraireDebut()) ? $planningType[$x]->getApresMidiHoraireDebut()->format('H:i') : '',
  132.                     'class' => 'bg-dark text-white',
  133.                     'data-bs-toggle' => 'tooltip',
  134.                     'data-bs-placement' => "top",
  135.                     'title' => "Après-midi - Heure de début"
  136.                 ]  
  137.             ])
  138.             ->add('apresMidiHoraireFin'TimeType::class, [
  139.                 'label' => 'Après-midi - Heure de fin',
  140.                 // 'mapped' => false,
  141.                 // 'widget' => 'single_text',
  142.                 'required' => false,
  143.                 'attr' => [
  144.                     // 'value' => ($planningType[$x]->getApresMidiHoraireFin()) ? $planningType[$x]->getApresMidiHoraireFin()->format('H:i') : '',
  145.                     'class' => 'bg-dark text-white',
  146.                     'data-bs-toggle' => 'tooltip',
  147.                     'data-bs-placement' => "top",
  148.                     'title' => "Après-midi - Heure de fin"
  149.                 ]  
  150.             ])
  151.             ->add('salle'EntityType::class, [
  152.                 'label' => 'Salle de formation',
  153.                 // 'mapped' => false,
  154.                 'class' => Salles::class,
  155.                 'query_builder' => function (EntityRepository $er) use ($idSite) {
  156.                     return $er->createQueryBuilder('s')
  157.                             ->andWhere('s.Site = '.$idSite)
  158.                             ->andWhere('s.etat = :val')
  159.                             ->setParameter('val'1);
  160.                 },
  161.                 'choice_label' => function($salle){
  162.                     return $salle->getIntitule();
  163.                 },
  164.                 'attr' => [
  165.                     'class' => 'bg-dark text-white',
  166.                     'data-bs-toggle' => 'tooltip',
  167.                     'data-bs-placement' => "top",
  168.                     'title' => "Salle de formation"
  169.                 ]  
  170.             ])
  171.             ->add('formateur'EntityType::class, [
  172.                 'label' => 'Formateur(trice)',
  173.                 // 'mapped' => false,
  174.                 'class' => Formateurs::class,
  175.                 'query_builder' => function(EntityRepository $formateur) use ($idAgence){
  176.                     // return $formateur->getNom().' '.$formateur->getPrenom().' ('.$formateur->getDiscipline()->getIntitule().')';
  177.                     return $formateur->createQueryBuilder('f')
  178.                             ->LeftJoin('f.agence''a')
  179.                             ->where('a.id = :val1')
  180.                             ->orWhere('f.affichageAgencesToutes = :val2')
  181.                             ->setParameter('val1'$idAgence)
  182.                             ->setParameter('val2'true)
  183.                             ->orderBy('f.nom, f.prenom''ASC');                         
  184.                 },
  185.                 'choice_label' => function($formateur){
  186.                     return $formateur->getNom().' '.$formateur->getPrenom().' ('.$formateur->getDiscipline()->getIntitule().')';
  187.                 },
  188.                 'attr' => [
  189.                     'data-bs-toggle' => 'tooltip',
  190.                     'data-bs-placement' => "top",
  191.                     'title' => "Formateur(trice)"
  192.                 ],
  193.                 // 'data' => $formateurListe
  194.             ])
  195.             // ->add('submit', SubmitType::class, [
  196.             //     'label' => 'Enregistrer',
  197.             //     'attr' => [
  198.             //         'class' => 'btn-primary mb-5'
  199.             //     ]
  200.             // ])
  201.         ;
  202.     }
  203.     public function configureOptions(OptionsResolver $resolver): void
  204.     {
  205.         $resolver->setDefaults([
  206.             'data_class' => PlanningsFormations::class,
  207.             'idPlanning' => null,
  208.             'idSite' => null,
  209.         ]);
  210.     }
  211. }