<?php
namespace App\Form\Formations\Plannings;
use App\Entity\Formateurs;
use App\Entity\PlanningsFormations;
use App\Entity\Salles;
use App\Repository\FormateursRepository;
use App\Repository\PlanningsFormationsRepository;
use App\Repository\SitesRepository;
use Doctrine\ORM\EntityRepository;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\TimeType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class PlanningsFormationsModifyFormType extends AbstractType
{
private $planning;
private $formateur;
private $site;
public function __construct(
PlanningsFormationsRepository $planningsFormationsRepository,
FormateursRepository $formateursRepository,
SitesRepository $sitesRepository
)
{
$this->planning = $planningsFormationsRepository;
$this->formateur = $formateursRepository;
$this->site = $sitesRepository;
}
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$idSite = $options['idSite'];
$idPlanning = $options['idPlanning'];
$formateurListe = $this->planning->find($idPlanning)->getFormateur();
$formateur = $formateurListe->getNom().' '.$formateurListe->getPrenom().' ('.$formateurListe->getDiscipline()->getIntitule().')';
$site = $this->site->find($idSite);
$idAgence = $site->getAgence()->getId();
$builder
->add('intitule', TextareaType::class, [
// 'mapped' => false,
// 'data' => $planningType->getIntitule(),
'attr' => [
// 'disabled' => true
'class' => 'fw-bold',
'readonly' => true,
'data-bs-toggle' => 'tooltip',
'data-bs-placement' => "top",
'title' => "Intitulé de la séquence",
'rows' => 3
]
])
->add('duree', TextType::class, [
'attr' => [
'readonly' => true,
'data-bs-toggle' => 'tooltip',
'data-bs-placement' => "top",
'title' => "Durée de la séquence"
]
])
->add('domaine', TextType::class, [
'attr' => [
'readonly' => true,
'data-bs-toggle' => 'tooltip',
'data-bs-placement' => "top",
'title' => "Domaine"
]
])
->add('dateDebut', DateType::class, [
'label' => 'Date et heure de début',
// 'mapped' => false,
'widget' => 'single_text',
'attr' => [
'class' => 'bg-dark text-white',
'data-bs-toggle' => 'tooltip',
'data-bs-placement' => "top",
'title' => "Date et heure de début"
]
])
// ->add('dateFin', DateTimeType::class, [
// 'label' => 'Date et heure de fin',
// // 'mapped' => false,
// 'widget' => 'single_text',
// 'attr' => [
// 'class' => 'bg-dark text-white',
// 'data-bs-toggle' => 'tooltip',
// 'data-bs-placement' => "top",
// 'title' => "Date et heure de fin"
// ]
// ])
->add('matinHoraireDebut', TimeType::class, [
'label' => 'Matin - Heure de début',
// 'mapped' => false,
// 'widget' => 'single_text',
'required' => false,
'attr' => [
// 'value' => ($planningType[$x]->getMatinHoraireDebut()) ? $planningType[$x]->getMatinHoraireDebut()->format('H:i') : '',
'class' => 'bg-dark text-white',
'data-bs-toggle' => 'tooltip',
'data-bs-placement' => "top",
'title' => "Matin - Heure de début"
]
])
->add('matinHoraireFin', TimeType::class, [
'label' => 'Matin - Heure de fin',
// 'mapped' => false,
// 'widget' => 'single_text',
'required' => false,
'attr' => [
// 'value' => ($planningType[$x]->getMatinHoraireFin()) ? $planningType[$x]->getMatinHoraireFin()->format('H:i') : '',
'class' => 'bg-dark text-white',
'data-bs-toggle' => 'tooltip',
'data-bs-placement' => "top",
'title' => "Matin - Heure de fin"
]
])
->add('apresMidiHoraireDebut', TimeType::class, [
'label' => 'Après-midi - Heure de début',
// 'mapped' => false,
// 'widget' => 'single_text',
'required' => false,
'attr' => [
// 'value' => ($planningType[$x]->getApresMidiHoraireDebut()) ? $planningType[$x]->getApresMidiHoraireDebut()->format('H:i') : '',
'class' => 'bg-dark text-white',
'data-bs-toggle' => 'tooltip',
'data-bs-placement' => "top",
'title' => "Après-midi - Heure de début"
]
])
->add('apresMidiHoraireFin', TimeType::class, [
'label' => 'Après-midi - Heure de fin',
// 'mapped' => false,
// 'widget' => 'single_text',
'required' => false,
'attr' => [
// 'value' => ($planningType[$x]->getApresMidiHoraireFin()) ? $planningType[$x]->getApresMidiHoraireFin()->format('H:i') : '',
'class' => 'bg-dark text-white',
'data-bs-toggle' => 'tooltip',
'data-bs-placement' => "top",
'title' => "Après-midi - Heure de fin"
]
])
->add('salle', EntityType::class, [
'label' => 'Salle de formation',
// 'mapped' => false,
'class' => Salles::class,
'query_builder' => function (EntityRepository $er) use ($idSite) {
return $er->createQueryBuilder('s')
->andWhere('s.Site = '.$idSite)
->andWhere('s.etat = :val')
->setParameter('val', 1);
},
'choice_label' => function($salle){
return $salle->getIntitule();
},
'attr' => [
'class' => 'bg-dark text-white',
'data-bs-toggle' => 'tooltip',
'data-bs-placement' => "top",
'title' => "Salle de formation"
]
])
->add('formateur', EntityType::class, [
'label' => 'Formateur(trice)',
// 'mapped' => false,
'class' => Formateurs::class,
'query_builder' => function(EntityRepository $formateur) use ($idAgence){
// return $formateur->getNom().' '.$formateur->getPrenom().' ('.$formateur->getDiscipline()->getIntitule().')';
return $formateur->createQueryBuilder('f')
->LeftJoin('f.agence', 'a')
->where('a.id = :val1')
->orWhere('f.affichageAgencesToutes = :val2')
->setParameter('val1', $idAgence)
->setParameter('val2', true)
->orderBy('f.nom, f.prenom', 'ASC');
},
'choice_label' => function($formateur){
return $formateur->getNom().' '.$formateur->getPrenom().' ('.$formateur->getDiscipline()->getIntitule().')';
},
'attr' => [
'data-bs-toggle' => 'tooltip',
'data-bs-placement' => "top",
'title' => "Formateur(trice)"
],
// 'data' => $formateurListe
])
// ->add('submit', SubmitType::class, [
// 'label' => 'Enregistrer',
// 'attr' => [
// 'class' => 'btn-primary mb-5'
// ]
// ])
;
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => PlanningsFormations::class,
'idPlanning' => null,
'idSite' => null,
]);
}
}