<?php
namespace App\Controller\Formations;
use App\Classes\PlagesGenererFormations;
use App\Entity\InscriptionsFormations;
use App\Entity\Stagiaires;
use App\Entity\StagiairesAbsences;
use App\Entity\StagiairesReports;
use App\Form\Formations\FormationInscrireStagiairesFormType;
use App\Form\Formations\Inscriptions\InscriptionsRechercherFormType;
use App\Repository\FormationsRepository;
use App\Repository\InscriptionsFormationsRepository;
use App\Repository\StagiairesAbsencesRepository;
use App\Repository\StagiairesEtatsRepository;
use App\Repository\StagiairesReportsRepository;
use App\Repository\StagiairesRepository;
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 FormationsInscrireStagiairesController extends AbstractController
{
/**
* @Route("/formations/inscrire/{idFormation}", name="formations_inscrire_stagiaires")
*/
public function index(
$idFormation,
FormationsRepository $formationsRepository,
StagiairesRepository $stagiairesRepository,
StagiairesEtatsRepository $stagiairesEtatsRepository,
Request $request,
ManagerRegistry $doctrine
): Response
{
$formation = $formationsRepository->find($idFormation);
$idAgence = $formation->getSite()->getAgence()->getId();
$numBloc = intval($formation->getBloc()->getNumBloc());
$stagiairesEtatsListe = $stagiairesEtatsRepository->findAll();
//FORMULAIRE DE RECHERCHES
$formulaireRecherches = $this->createForm(InscriptionsRechercherFormType::class,
null, [
'inscriptionNom' => null,
'inscriptionPriorite' => null,
'inscriptionAccueil240h' => null,
'inscriptionForcer' => null
]);
$formulaireRecherches->handleRequest($request);
if($formulaireRecherches->isSubmitted()) {
$stagiaireNom = $formulaireRecherches->get('nom')->getData();
$stagiairePriorite = $formulaireRecherches->get('priorites')->getData();
$stagiaireAccueil240h = $formulaireRecherches->get('accueil240h')->getData();
$stagiaireForcer = $formulaireRecherches->get('forcer')->getData();;
}
else {
$stagiaireNom = '';
$stagiairePriorite = '';
$stagiaireAccueil240h = '';
$stagiaireForcer = '';
}
$stagiaires = $stagiairesRepository->findIncriptionsListeStagiairesFormations(
$idAgence,
$numBloc,
$stagiaireNom,
$stagiairePriorite,
$stagiaireAccueil240h,
$stagiaireForcer
);
// dd($stagiaires);
$formulaire = $this->createForm(
FormationInscrireStagiairesFormType::class,
$stagiaires,
[
'idFormation' => $idFormation,
'numBloc' => $numBloc,
'stagiaireNom' => $stagiaireNom,
'stagiairePriorite' => $stagiairePriorite,
'stagiaireAccueil240h' => $stagiaireAccueil240h,
'stagiaireForcer' => $stagiaireForcer
]
);
$formulaire->handleRequest($request);
// ManyToMany
//
// if($formulaire->isSubmitted()) {
// // dd($formulaire->get('stagiaireSelection0')->getData());
// $entityManager = $doctrine->getManager();
// $x = $formulaire->get('x')->getData();
// for($y=0; $y<$x; $y++) {
// $stagiaireSelected = $formulaire->get('stagiaireSelection'.$y)->getData();
// if($stagiaireSelected==true) {
// $idStagiaire = $formulaire->get('idStagiaire'.$y)->getData();
// $stagiaire = $stagiairesRepository->find($idStagiaire);
// $stagiaire->addFormation($formation);
// $entityManager->persist($stagiaire);
// $entityManager->flush();
// }
// }
// return $this->redirectToRoute('formations_show', ['id' => $idFormation]);
// }
// OneToMany
if($formulaire->isSubmitted()) {
$x = $formulaire->get('x')->getData();
for($y=0; $y<$x; $y++) {
$inscription = new InscriptionsFormations();
$entityManager = $doctrine->getManager();
$stagiaireSelected = $formulaire->get('stagiaireSelection'.$y)->getData();
if($stagiaireSelected==true) {
$idStagiaire = $formulaire->get('idStagiaire'.$y)->getData();
$stagiaire = $stagiairesRepository->find($idStagiaire);
$formation = $formationsRepository->find($idFormation);
$inscription->setFormations($formation);
$inscription->setStagiaires($stagiaire);
$inscription->setEtat(1);
$dateCreation = new DateTime('NOW');
$dateCreation->format('Y-m-d H:i');
$inscription->setDateCreation($dateCreation);
$entityManager->persist($inscription);
//TRAITEMENT DE L'ETAT DU STAGIAIRE
if($formation->getBloc()->getNumBloc() == 1) {
// if(
// $stagiaire->getEtat() == 1
// || $stagiaire->getEtat() == 11
// || $stagiaire->getEtat() == 13
// ) {
$stagiaire->setEtat(3);
// }
} else {
// if(
// $stagiaire->getEtat() == 2
// || $stagiaire->getEtat() == 12
// || $stagiaire->getEtat() == 14
// ) {
$stagiaire->setEtat(4);
// }
}
$entityManager->persist($stagiaire);
$entityManager->flush();
$entityManager->clear();
$plages = new PlagesGenererFormations();
$plages = $plages->plagesGenerer($idFormation, $idStagiaire, $doctrine);
}
}
return $this->redirectToRoute('formations_show_inscriptions', ['idFormation' => $idFormation]);
}
return $this->render('formations/formationsInscrireStagiaires.html.twig', [
'formation' => $formation,
'stagiaires' => $stagiaires,
'stagiairesEtatsListe' => $stagiairesEtatsListe,
'formulaire' => $formulaire->createView(),
'formulaireRecherches' => $formulaireRecherches->createView()
]);
}
/**
* @Route("/formations/desinscrire/{idStagiaire}/{idFormation}/{idInscription}", name="formations_desinscrire_stagiaires")
*/
public function desinscrire(
$idStagiaire,
$idFormation,
$idInscription,
InscriptionsFormationsRepository $inscriptionsFormationsRepository,
FormationsRepository $formationsRepository,
StagiairesAbsencesRepository $stagiairesAbsencesRepository,
StagiairesReportsRepository $stagiairesReportsRepository,
ManagerRegistry $doctrine
): Response
{
// dd($idFormation);
$entityManager = $doctrine->getManager();
$stagiaire = $entityManager->getRepository(Stagiaires::class)->find($idStagiaire);
$formation = $formationsRepository->find($idFormation);
$numBloc = $formation->getBloc()->getNumBloc();
$absences = $stagiairesAbsencesRepository->findBy([
'stagiaires' => $stagiaire,
'numBloc' => $numBloc
]);
$reports = $stagiairesReportsRepository->findBy([
'stagiaires' => $stagiaire,
'numBloc' => $numBloc
]);
if(count($absences) > 0){
if($numBloc == 1) {
dump('etat = 13');
$stagiaire->setEtat(13);
}
else {
dump('etat = 14');
$stagiaire->setEtat(14);
}
}
else if(count($reports) > 0){
if($numBloc == 1) {
dump('etat = 11');
$stagiaire->setEtat(11);
}
else {
dump('etat = 12');
$stagiaire->setEtat(12);
}
}
else {
if($numBloc == 1) {
dump('etat = 1');
$stagiaire->setEtat(1);
}
else {
dump('etat = 2');
$stagiaire->setEtat(2);
}
}
$inscription = $inscriptionsFormationsRepository->find($idInscription);
$entityManager->remove($inscription);
$entityManager->persist($stagiaire);
$entityManager->flush();
$plagesDelete = new PlagesGenererFormations();
$plagesDelete->plagesSupprimer($idFormation, $idStagiaire, $doctrine);
return $this->redirectToRoute('formations_show_inscriptions', ['idFormation' => $idFormation]);
}
}