src/Controller/FeuilleEmargementController.php line 27

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\AtelierNew;
  4. use App\Entity\Emargement;
  5. use App\Entity\FeuilleEmargement;
  6. use App\Repository\AtelierNewRepository;
  7. use App\Repository\EmargementRepository;
  8. use App\Repository\LieuRepository;
  9. use App\Service\SharepointApi;
  10. use Doctrine\Persistence\ManagerRegistry;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. use Dompdf\Dompdf;
  16. use Dompdf\Options;
  17. class FeuilleEmargementController extends AbstractController
  18. {
  19.     /**
  20.      * @Route("/", name="feuille_emargement")
  21.      */
  22.     public function index(EmargementRepository $emargementRepository): Response
  23.     {
  24.         $this->denyAccessUnlessGranted('ROLE_ADMIN'null'User tried to access a page without having ROLE_ADMIN');
  25.         if(isset($_GET['champTri'])) {
  26.             $champTri $_GET['champTri'];
  27.             $ordreTri $_GET['ordreTri'];
  28.         }
  29.         else{
  30.             $champTri "date_debut_session";
  31.             $ordreTri "DESC";
  32.         }
  33.         $feuilles =  $emargementRepository->findAllEmargement($champTri,$ordreTri);
  34.         
  35.         $message = isset($_GET['message']) ? $_GET['message'] : "";
  36.         return $this->render('feuille_emargement/index.html.twig', [
  37.             'feuilles' => $feuilles,
  38.             'champTri' => $champTri,
  39.             'ordreTri' => $ordreTri,
  40.             'message' => $message
  41.         ]);
  42.     }
  43.     
  44.     
  45.     /**
  46.      * @Route("/emargement/{id}", name="feuille_emargement_fiche")
  47.      */
  48.     public function fiche(int $idEmargementRepository $emargementRepositoryAtelierNewRepository $atelierNewRepository,Request $request): Response {
  49.         $this->denyAccessUnlessGranted('ROLE_ADMIN'null'User tried to access a page without having ROLE_ADMIN');
  50.        // echo "test CW";
  51.         //     die();
  52.         // Génération du pdf d'émargement + affichage...
  53.         header("Content-Type: application/pdf");
  54.        
  55.         $session $atelierNewRepository->find($id);
  56.         $emargements =  $emargementRepository->findBySessionWithParticipant($session->getIdSession());
  57.         
  58.         $pdfOptions = new Options();
  59.         $pdfOptions->setIsHtml5ParserEnabled(true);
  60.         $pdfOptions->set('defaultFont''Arial');
  61.         $pdfOptions->set('isRemoteEnabled'true);
  62.         
  63.         // Instantiate Dompdf with our options
  64.         $dompdf = new Dompdf($pdfOptions);
  65.         //$dompdf->setBasePath(realpath("/"));
  66.         // Retrieve the HTML generated in our twig file
  67.         $html $this->renderView('feuille_emargement/pdf.html.twig', [
  68.             'emargements' => $emargements,
  69.             'session' => $session,
  70.             'footer' => true
  71.         ]);
  72.         //$dompdf->setBasePath(realpath("/public"));
  73.         // Load HTML to Dompdf
  74.         $dompdf->loadHtml($html);
  75.         
  76.         // (Optional) Setup the paper size and orientation 'portrait' or 'portrait'
  77.         $dompdf->setPaper('A4''portrait');
  78.         // Render the HTML as PDF
  79.         $dompdf->render();
  80.         // Output the generated PDF to Browser (force download)
  81.         $dompdf->stream("emargement.pdf", [
  82.             "Attachment" => False
  83.         ]);
  84.         return new Response(''200, [
  85.           'Content-Type' => 'application/pdf',
  86.         ]);
  87.     }
  88.     /**
  89.      * @Route("/emargement/{id}/delete", name="feuille_delete")
  90.      */
  91.     public function delete(Request $requestAtelierNew $session,ManagerRegistry $registry,EmargementRepository $emargementRepository): Response
  92.     {
  93.         //echo "in delete";
  94.         if ($this->isCsrfTokenValid('delete'.$session->getId(), $request->request->get('_token'))) {
  95.             $emargements $emargementRepository->findBy(["idSession" => $session->getIdSession() ]);
  96.             foreach ($emargements as $key => $emargement) {
  97.                 # code...
  98.                 $emargement->setArchive(true);
  99.             }
  100.             $entityManager $registry->getManager();
  101.             $entityManager->flush();
  102.         }
  103.         return $this->redirectToRoute('feuille_emargement', [], Response::HTTP_SEE_OTHER);
  104.     }
  105.     /**
  106.      * @Route("/emargement/{id}/sharepoint", name="feuille_sharepoint")
  107.      */
  108.     public function uploadSharepoint(int $idEmargementRepository $emargementRepositoryAtelierNewRepository $atelierNewRepository,SharepointApi $sharepointApi,LieuRepository $lieuRepository):Response
  109.     {
  110.         $this->denyAccessUnlessGranted('ROLE_ADMIN'null'User tried to access a page without having ROLE_ADMIN');
  111.     
  112.         $session $atelierNewRepository->find($id);
  113.         $emargements =  $emargementRepository->findBySessionWithParticipant($session->getIdSession());
  114.         
  115.         $pdfOptions = new Options();
  116.         $pdfOptions->setIsHtml5ParserEnabled(true);
  117.         $pdfOptions->set('defaultFont''Arial');
  118.         $pdfOptions->set('isRemoteEnabled'true);
  119.         
  120.         // Instantiate Dompdf with our options
  121.         $dompdf = new Dompdf($pdfOptions);
  122.         //$dompdf->setBasePath(realpath("/"));
  123.         // Retrieve the HTML generated in our twig file
  124.         $html $this->renderView('feuille_emargement/pdf.html.twig', [
  125.             'emargements' => $emargements,
  126.             'session' => $session,
  127.             'footer' => true
  128.         ]);
  129.         //$dompdf->setBasePath(realpath("/public"));
  130.         // Load HTML to Dompdf
  131.         $dompdf->loadHtml($html);
  132.         
  133.         // (Optional) Setup the paper size and orientation 'portrait' or 'portrait'
  134.         $dompdf->setPaper('A4''portrait');
  135.         // Render the HTML as PDF
  136.         $dompdf->render();
  137.  
  138.         $content $dompdf->output();
  139.         $firstEmargement array_pop($emargements);
  140.         $lieuId = (int)$firstEmargement["lieu"];
  141.         $lieu $lieuRepository->find($lieuId);
  142.         $resultUpload $sharepointApi->putEmargementAtelier($lieu,$session,$content);
  143.         $message $resultUpload['message'];
  144.         return $this->redirectToRoute('feuille_emargement', ['message'=>$message], Response::HTTP_SEE_OTHER);
  145.  
  146.     }
  147. }