<?php
namespace App\Controller\Formations\Plannings;
use App\Classes\PlagesGenererFormations;
use App\Entity\Formations;
use App\Entity\PlanningsFormations;
use App\Form\Formations\Plannings\PlanningsFormationsAnnulerRemplacerFormType;
use App\Form\Formations\Plannings\PlanningsFormationsModifyFormType;
use App\Repository\FormateursRepository;
use App\Repository\FormationsRepository;
use App\Repository\PlagesFormationsRepository;
use App\Repository\PlanningFormationsRepository;
use App\Repository\PlanningsFormationsRepository;
use DateTime;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class PlanningsModifyController extends AbstractController
{
private $message;
/**
* @Route("/formations/plannings/modifier/{idFormation}/{idPlanning}", name="formations_plannings_modifier")
*/
public function modifyPlanning($idFormation, $idPlanning, Request $request, ManagerRegistry $doctrine, PlanningsFormationsRepository $planningsFormationsRepository, FormateursRepository $formateursRepository, FormationsRepository $formationsRepository): Response
{
$formation = $formationsRepository->find($idFormation);
$idSite = $formation->getSite()->getId();
$planning = $planningsFormationsRepository->find($idPlanning);
$formateur = $formateursRepository->find($planning->getFormateur());
$formulaire = $this->createForm(PlanningsFormationsModifyFormType::class, $planning, [
'idPlanning'=>$idPlanning,
'idSite' => $idSite
]);
$formulaire->handleRequest($request);
if($formulaire->isSubmitted()) {
// $formation = $formationsRepository->find($idFormation);
$dateDebut = $formulaire->get('dateDebut')->getData();
// $dateFin = $formulaire->get('dateFin')->getData();
// $matinHoraireDebut = $formulaire->get('matinHoraireDebut')->getData();
// $matinHoraireFin = $formulaire->get('matinHoraireFin')->getData();
// $apresMidiHoraireDebut = $formulaire->get('apresMidiHoraireDebut')->getData();
$apresMidiHoraireFin = $formulaire->get('apresMidiHoraireFin')->getData();
$formateur = $formulaire->get('formateur')->getData();
$salle = $formulaire->get('salle')->getData();
$matinHoraireDebut = $formulaire->get('matinHoraireDebut')->getData();
if($matinHoraireDebut == null) {
$matinHoraireDebut = new DateTime('00:00');
}
$matinHoraireFin = $formulaire->get('matinHoraireFin')->getData();
if($matinHoraireFin == null) {
$matinHoraireFin = new DateTime('00:00');
}
$apresMidiHoraireDebut = $formulaire->get('apresMidiHoraireDebut')->getData();
if($apresMidiHoraireDebut == null) {
$apresMidiHoraireDebut = new DateTime('00:00');
}
$apresMidiHoraireFin = $formulaire->get('apresMidiHoraireFin')->getData();
if($apresMidiHoraireFin == null) {
$apresMidiHoraireFin = new DateTime('00:00');
}
//ASSIGNATION ORDRE DEMI JOURNEE - POUR AFFICHAGE CORRECT SUR VUES DES PLANNINGS
// dd($apresMidiHoraireDebut->format('H:i'));
if($matinHoraireDebut->format('H:i') != '00:00' && $apresMidiHoraireDebut->format('H:i') == '00:00') {
$demiJournee = 1;
}
else if($matinHoraireDebut->format('H:i') == '00:00' && $apresMidiHoraireDebut->format('H:i') != '00:00') {
$demiJournee = 2;
}
else if($matinHoraireDebut->format('H:i') != '00:00' && $apresMidiHoraireDebut->format('H:i') != '00:00') {
$demiJournee = 3;
}
$planning->setDateDebut($dateDebut);
// $planning->setDateFin($dateFin);
$planning->setMatinHoraireDebut($matinHoraireDebut);
$planning->setMatinHoraireFin($matinHoraireFin);
$planning->setApresMidiHoraireDebut($apresMidiHoraireDebut);
$planning->setApresMidiHoraireFin($apresMidiHoraireFin);
$planning->setFormateur($formateur);
$planning->setSalle($salle);
$planning->setDemiJournee($demiJournee);
$entityManager = $doctrine->getManager();
$entityManager->persist($planning);
$entityManager->flush();
return $this->redirectToRoute('formations_show_planning', ['idFormation' => $idFormation]);
}
return $this->render('formations/plannings/planningsModifier.html.twig', [
'message' => $this->message,
'formulaire' => $formulaire->createView(),
'idPlanning' => $idPlanning,
'idFormation' => $idFormation,
'formation' => $formation
]);
}
/**
* @Route("/formations/plannings/annuler/{idFormation}/{idPlanning}", name="formations_plannings_annuler")
*/
public function annulerPlanning(
$idFormation,
$idPlanning,
Request $request,
ManagerRegistry $doctrine,
PlanningsFormationsRepository $planningsFormationsRepository,
FormateursRepository $formateursRepository,
FormationsRepository $formationsRepository,
PlagesFormationsRepository $plagesFormationsRepository
): Response
{
$formation = $formationsRepository->find($idFormation);
$idSite = $formation->getSite()->getId();
$planning = $planningsFormationsRepository->find($idPlanning);
$formateur = $formateursRepository->find($planning->getFormateur());
$formulaire = $this->createForm(PlanningsFormationsModifyFormType::class, $planning, [
'idPlanning'=>$idPlanning,
'idSite' => $idSite
]);
// $formulaire->handleRequest($request);
$formulaireRemplacer = $this->createForm(PlanningsFormationsAnnulerRemplacerFormType::class, null, [
'idPlanning'=>$idPlanning,
'idSite' => $idSite,
'intitule' => $planning->getIntitule(),
'domaine' => $planning->getDomaine(),
'duree' => $planning->getDuree(),
'matinHoraireDebut' => $planning->getMatinHoraireDebut(),
'matinHoraireFin' => $planning->getMatinHoraireFin(),
'apresMidiHoraireDebut' => $planning->getApresMidiHoraireDebut(),
'apresMidiHoraireFin' => $planning->getApresMidiHoraireFin(),
'salle' => $planning->getSalle(),
'formateur' => $planning->getFormateur()
]);
$formulaireRemplacer->handleRequest($request);
if($formulaireRemplacer->isSubmitted()) {
// 1. CHANGEMENT ETAT DU PLANNING ANNULE
$planning->setEtat(2);
// 2. CHANGEMENT ETAT DES PLAGES ANNULEES
$plages = $plagesFormationsRepository->findBy([
'planning' => $planning
]);
foreach($plages as $plage) {
$plage->setEtat(2);
$entityManager = $doctrine->getManager();
$entityManager->persist($plage);
$entityManager->flush();
}
// dump($plages);
// dump($planning);
// 2. Créer item du planning
$planningNew = new PlanningsFormations();
$planningNew->setBlocs($planning->getBlocs());
$planningNew->setIntitule($planning->getIntitule());
$planningNew->setDomaine($planning->getDomaine());
$planningNew->setDuree($planning->getDuree());
$planningNew->setFormation($formation);
$planningNew->setEtat(1);
$planningNew->setDureeNonCompta($planning->getDureeNonCompta());
$planningNew->setFacultatif($planning->getFacultatif());
$planningNew->setDemiJournee($planning->getDemiJournee());
$dateDebut = $formulaireRemplacer->get('dateDebut')->getData();
$matinHoraireDebut = $formulaireRemplacer->get('matinHoraireDebut')->getData();
$matinHoraireFin = $formulaireRemplacer->get('matinHoraireFin')->getData();
$apresMidiHoraireDebut = $formulaireRemplacer->get('apresMidiHoraireDebut')->getData();
$apresMidiHoraireFin = $formulaireRemplacer->get('apresMidiHoraireFin')->getData();
$salle = $formulaireRemplacer->get('salle')->getData();
$formateur = $formulaireRemplacer->get('formateur')->getData();
$planningNew->setDateDebut($dateDebut);
$planningNew->setMatinHoraireDebut($matinHoraireDebut);
$planningNew->setMatinHoraireFin($matinHoraireFin);
$planningNew->setApresMidiHoraireDebut($apresMidiHoraireDebut);
$planningNew->setApresMidiHoraireFin($apresMidiHoraireFin);
$planningNew->setSalle($salle);
$planningNew->setFormateur($formateur);
// dump($planning);
// dd($planningNew);
// dd($planningNew);
$entityManager = $doctrine->getManager();
$entityManager->persist($planning);
$entityManager->persist($planningNew);
$entityManager->flush();
$idPlanningNew = $planningNew->getId();
$listeStagiaires = $plagesFormationsRepository->findByPlagesGroupStagiaires($idPlanning);
// dump($listeStagiaires);
foreach($listeStagiaires as $stagiaire) {
$plageNew = new PlagesGenererFormations();
$plageNew = $plageNew->UnePlageGenerer($idPlanningNew, $stagiaire->getStagiaire()->getId(), $doctrine);
}
// dump($listePlages);
// dd($planningNew);
// 2. CREATION DES NOUVELLES PLAGES
return $this->redirectToRoute('formations_show_planning', ['idFormation' => $idFormation]);
}
// $listeStagiaires = [];
// foreach($planning->getPlagesFormations() as $plages) {
// $listeStagiaires[$plages->getId()] = $plages->getStagiaire()->getNom() . ' ' . $plages->getStagiaire()->getPrenom();
// }
// dd($listeStagiaires);
$listeStagiaires = $plagesFormationsRepository->findByPlagesGroupStagiaires($idPlanning);
return $this->render('formations/plannings/planningsAnnuler.html.twig', [
'message' => $this->message,
'formulaire' => $formulaire->createView(),
'formulaireRemplacer' => $formulaireRemplacer->createView(),
'idPlanning' => $idPlanning,
'idFormation' => $idFormation,
'formation' => $formation,
'listeStagiaires' => $listeStagiaires
]);
}
}