src/Controller/SequenceController.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Competence;
  4. use App\Entity\Seance;
  5. use App\Entity\Sequence;
  6. use App\Form\SequenceType;
  7. use App\Repository\SequenceRepository;
  8. use Knp\Bundle\SnappyBundle\Snappy\Response\PdfResponse;
  9. use Knp\Snappy\Pdf;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. #[Route('/sequence')]
  15. class SequenceController extends AbstractController
  16. {
  17.     #[Route('/'name'app_sequence_index'methods: ['GET'])]
  18.     public function index(SequenceRepository $sequenceRepository): Response
  19.     {
  20.         return $this->render('sequence/index.html.twig', [
  21.             'sequences' => $sequenceRepository->findAll(),
  22.         ]);
  23.     }
  24.     #[Route('/new'name'app_sequence_new'methods: ['GET''POST'])]
  25.     public function new(Request $requestSequenceRepository $sequenceRepository): Response
  26.     {
  27.         $sequence = new Sequence();
  28.         $form $this->createForm(SequenceType::class, $sequence);
  29.         $form->handleRequest($request);
  30.         if ($form->isSubmitted() && $form->isValid()) {
  31.             $sequenceRepository->add($sequencetrue);
  32.             return $this->redirectToRoute('app_sequence_show', ["id" => $sequence->getId()], Response::HTTP_SEE_OTHER);
  33.         }
  34.         return $this->renderForm('sequence/new.html.twig', [
  35.             'sequence' => $sequence,
  36.             'form' => $form,
  37.         ]);
  38.     }
  39.     #[Route('/{id}'name'app_sequence_show'methods: ['GET'])]
  40.     public function show(Sequence $sequence): Response
  41.     {
  42.         return $this->render('sequence/show.html.twig', [
  43.             'sequence' => $sequence,
  44.         ]);
  45.     }
  46.     #[Route('/{id}/edit'name'app_sequence_edit'methods: ['GET''POST'])]
  47.     public function edit(Request $requestSequence $sequenceSequenceRepository $sequenceRepository): Response
  48.     {
  49.         $form $this->createForm(SequenceType::class, $sequence);
  50.         $form->handleRequest($request);
  51.         if ($form->isSubmitted() && $form->isValid()) {
  52.             $sequenceRepository->add($sequencetrue);
  53.             return $this->redirectToRoute('app_sequence_show', ["id" => $sequence->getId()], Response::HTTP_SEE_OTHER);
  54.         }
  55.         return $this->renderForm('sequence/edit.html.twig', [
  56.             'sequence' => $sequence,
  57.             'form' => $form,
  58.         ]);
  59.     }
  60.     #[Route('/{id}'name'app_sequence_delete'methods: ['POST'])]
  61.     public function delete(Request $requestSequence $sequenceSequenceRepository $sequenceRepository): Response
  62.     {
  63.         if ($this->isCsrfTokenValid('delete'.$sequence->getId(), $request->request->get('_token'))) {
  64.             $sequenceRepository->remove($sequencetrue);
  65.         }
  66.         return $this->redirectToRoute('app_sequence_index', [], Response::HTTP_SEE_OTHER);
  67.     }
  68.     #[Route('/pdf/{id}'name'app_sequence_pdf'methods: ['GET'])]
  69.     public function printInPdf(Pdf $pdf,Sequence $sequence): Response
  70.     {
  71.         $domaineActivite = [];
  72.         $competences = [];
  73.         $nbHeureTotal0;
  74.         /** @var Competence $competence */
  75.         foreach ($sequence->getRefCompetence() as  $competence){
  76.             if (!in_array($competence->getMainCompetence(),$domaineActivite))
  77.                 $domaineActivite[] = $competence->getMainCompetence();
  78.             if(!in_array($competence->getRefCompetence(),$competences)){
  79.                 $competences[] = $competence->getRefCompetence();
  80.             }
  81.         }
  82.         /** @var Seance $seance */
  83.         foreach ($sequence->getRefSeances() as $seance){
  84.             $nbHeureTotal += $seance->getDuree();
  85.         }
  86.         $pageUrl $this->renderView('pdf/ficheSequence.html.twig', array(
  87.             'sequence' => $sequence,
  88.             'domaineActivite' => $domaineActivite,
  89.             'nbHeureTotal' => $nbHeureTotal,
  90.             'competences' => $competences,
  91.         ));
  92.         return new PdfResponse(
  93.             $pdf->getOutputFromHtml($pageUrl,[
  94.                 "orientation" => 'Landscape',
  95.                 "enable-local-file-access" => true,
  96.                 "enable-javascript" => true
  97.             ]),
  98.             iconv('UTF-8','ASCII//TRANSLIT',$sequence->getTitre()) .'.pdf'
  99.         );
  100.     }
  101.     #[Route('/page/{id}'name'app_sequence_page'methods: ['GET'])]
  102.     public function showForPdf(Pdf $pdf,Sequence $sequence): Response
  103.     {
  104.         $domaineActivite = [];
  105.         $competences = [];
  106.         $nbHeureTotal0;
  107.         /** @var Competence $competence */
  108.         foreach ($sequence->getRefCompetence() as  $competence){
  109.             if (!in_array($competence->getMainCompetence(),$domaineActivite))
  110.                 $domaineActivite[] = $competence->getMainCompetence();
  111.             if(!in_array($competence->getRefCompetence(),$competences)){
  112.                 $competences[] = $competence->getRefCompetence();
  113.             }
  114.         }
  115.         /** @var Seance $seance */
  116.         foreach ($sequence->getRefSeances() as $seance){
  117.             $nbHeureTotal += $seance->getDuree();
  118.         }
  119.         return $this->render('pdf/ficheSequence.html.twig', array(
  120.             'sequence' => $sequence,
  121.             'domaineActivite' => $domaineActivite,
  122.             'nbHeureTotal' => $nbHeureTotal,
  123.             'competences' => $competences,
  124.         ));
  125.     }
  126. }