<?php
namespace App\Controller;
use App\Entity\Competence;
use App\Entity\Seance;
use App\Entity\Sequence;
use App\Form\SequenceType;
use App\Repository\SequenceRepository;
use Knp\Bundle\SnappyBundle\Snappy\Response\PdfResponse;
use Knp\Snappy\Pdf;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
#[Route('/sequence')]
class SequenceController extends AbstractController
{
#[Route('/', name: 'app_sequence_index', methods: ['GET'])]
public function index(SequenceRepository $sequenceRepository): Response
{
return $this->render('sequence/index.html.twig', [
'sequences' => $sequenceRepository->findAll(),
]);
}
#[Route('/new', name: 'app_sequence_new', methods: ['GET', 'POST'])]
public function new(Request $request, SequenceRepository $sequenceRepository): Response
{
$sequence = new Sequence();
$form = $this->createForm(SequenceType::class, $sequence);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$sequenceRepository->add($sequence, true);
return $this->redirectToRoute('app_sequence_show', ["id" => $sequence->getId()], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('sequence/new.html.twig', [
'sequence' => $sequence,
'form' => $form,
]);
}
#[Route('/{id}', name: 'app_sequence_show', methods: ['GET'])]
public function show(Sequence $sequence): Response
{
return $this->render('sequence/show.html.twig', [
'sequence' => $sequence,
]);
}
#[Route('/{id}/edit', name: 'app_sequence_edit', methods: ['GET', 'POST'])]
public function edit(Request $request, Sequence $sequence, SequenceRepository $sequenceRepository): Response
{
$form = $this->createForm(SequenceType::class, $sequence);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$sequenceRepository->add($sequence, true);
return $this->redirectToRoute('app_sequence_show', ["id" => $sequence->getId()], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('sequence/edit.html.twig', [
'sequence' => $sequence,
'form' => $form,
]);
}
#[Route('/{id}', name: 'app_sequence_delete', methods: ['POST'])]
public function delete(Request $request, Sequence $sequence, SequenceRepository $sequenceRepository): Response
{
if ($this->isCsrfTokenValid('delete'.$sequence->getId(), $request->request->get('_token'))) {
$sequenceRepository->remove($sequence, true);
}
return $this->redirectToRoute('app_sequence_index', [], Response::HTTP_SEE_OTHER);
}
#[Route('/pdf/{id}', name: 'app_sequence_pdf', methods: ['GET'])]
public function printInPdf(Pdf $pdf,Sequence $sequence): Response
{
$domaineActivite = [];
$competences = [];
$nbHeureTotal= 0;
/** @var Competence $competence */
foreach ($sequence->getRefCompetence() as $competence){
if (!in_array($competence->getMainCompetence(),$domaineActivite))
$domaineActivite[] = $competence->getMainCompetence();
if(!in_array($competence->getRefCompetence(),$competences)){
$competences[] = $competence->getRefCompetence();
}
}
/** @var Seance $seance */
foreach ($sequence->getRefSeances() as $seance){
$nbHeureTotal += $seance->getDuree();
}
$pageUrl = $this->renderView('pdf/ficheSequence.html.twig', array(
'sequence' => $sequence,
'domaineActivite' => $domaineActivite,
'nbHeureTotal' => $nbHeureTotal,
'competences' => $competences,
));
return new PdfResponse(
$pdf->getOutputFromHtml($pageUrl,[
"orientation" => 'Landscape',
"enable-local-file-access" => true,
"enable-javascript" => true
]),
iconv('UTF-8','ASCII//TRANSLIT',$sequence->getTitre()) .'.pdf'
);
}
#[Route('/page/{id}', name: 'app_sequence_page', methods: ['GET'])]
public function showForPdf(Pdf $pdf,Sequence $sequence): Response
{
$domaineActivite = [];
$competences = [];
$nbHeureTotal= 0;
/** @var Competence $competence */
foreach ($sequence->getRefCompetence() as $competence){
if (!in_array($competence->getMainCompetence(),$domaineActivite))
$domaineActivite[] = $competence->getMainCompetence();
if(!in_array($competence->getRefCompetence(),$competences)){
$competences[] = $competence->getRefCompetence();
}
}
/** @var Seance $seance */
foreach ($sequence->getRefSeances() as $seance){
$nbHeureTotal += $seance->getDuree();
}
return $this->render('pdf/ficheSequence.html.twig', array(
'sequence' => $sequence,
'domaineActivite' => $domaineActivite,
'nbHeureTotal' => $nbHeureTotal,
'competences' => $competences,
));
}
}