<?php
namespace App\Controller;
use App\Entity\AtelierNew;
use App\Entity\Emargement;
use App\Entity\FeuilleEmargement;
use App\Repository\AtelierNewRepository;
use App\Repository\EmargementRepository;
use App\Repository\LieuRepository;
use App\Service\SharepointApi;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Dompdf\Dompdf;
use Dompdf\Options;
class FeuilleEmargementController extends AbstractController
{
/**
* @Route("/", name="feuille_emargement")
*/
public function index(EmargementRepository $emargementRepository): Response
{
$this->denyAccessUnlessGranted('ROLE_ADMIN', null, 'User tried to access a page without having ROLE_ADMIN');
if(isset($_GET['champTri'])) {
$champTri = $_GET['champTri'];
$ordreTri = $_GET['ordreTri'];
}
else{
$champTri = "date_debut_session";
$ordreTri = "DESC";
}
$feuilles = $emargementRepository->findAllEmargement($champTri,$ordreTri);
$message = isset($_GET['message']) ? $_GET['message'] : "";
return $this->render('feuille_emargement/index.html.twig', [
'feuilles' => $feuilles,
'champTri' => $champTri,
'ordreTri' => $ordreTri,
'message' => $message
]);
}
/**
* @Route("/emargement/{id}", name="feuille_emargement_fiche")
*/
public function fiche(int $id, EmargementRepository $emargementRepository, AtelierNewRepository $atelierNewRepository,Request $request): Response {
$this->denyAccessUnlessGranted('ROLE_ADMIN', null, 'User tried to access a page without having ROLE_ADMIN');
// echo "test CW";
// die();
// Génération du pdf d'émargement + affichage...
header("Content-Type: application/pdf");
$session = $atelierNewRepository->find($id);
$emargements = $emargementRepository->findBySessionWithParticipant($session->getIdSession());
$pdfOptions = new Options();
$pdfOptions->setIsHtml5ParserEnabled(true);
$pdfOptions->set('defaultFont', 'Arial');
$pdfOptions->set('isRemoteEnabled', true);
// Instantiate Dompdf with our options
$dompdf = new Dompdf($pdfOptions);
//$dompdf->setBasePath(realpath("/"));
// Retrieve the HTML generated in our twig file
$html = $this->renderView('feuille_emargement/pdf.html.twig', [
'emargements' => $emargements,
'session' => $session,
'footer' => true
]);
//$dompdf->setBasePath(realpath("/public"));
// Load HTML to Dompdf
$dompdf->loadHtml($html);
// (Optional) Setup the paper size and orientation 'portrait' or 'portrait'
$dompdf->setPaper('A4', 'portrait');
// Render the HTML as PDF
$dompdf->render();
// Output the generated PDF to Browser (force download)
$dompdf->stream("emargement.pdf", [
"Attachment" => False
]);
return new Response('', 200, [
'Content-Type' => 'application/pdf',
]);
}
/**
* @Route("/emargement/{id}/delete", name="feuille_delete")
*/
public function delete(Request $request, AtelierNew $session,ManagerRegistry $registry,EmargementRepository $emargementRepository): Response
{
//echo "in delete";
if ($this->isCsrfTokenValid('delete'.$session->getId(), $request->request->get('_token'))) {
$emargements = $emargementRepository->findBy(["idSession" => $session->getIdSession() ]);
foreach ($emargements as $key => $emargement) {
# code...
$emargement->setArchive(true);
}
$entityManager = $registry->getManager();
$entityManager->flush();
}
return $this->redirectToRoute('feuille_emargement', [], Response::HTTP_SEE_OTHER);
}
/**
* @Route("/emargement/{id}/sharepoint", name="feuille_sharepoint")
*/
public function uploadSharepoint(int $id, EmargementRepository $emargementRepository, AtelierNewRepository $atelierNewRepository,SharepointApi $sharepointApi,LieuRepository $lieuRepository):Response
{
$this->denyAccessUnlessGranted('ROLE_ADMIN', null, 'User tried to access a page without having ROLE_ADMIN');
$session = $atelierNewRepository->find($id);
$emargements = $emargementRepository->findBySessionWithParticipant($session->getIdSession());
$pdfOptions = new Options();
$pdfOptions->setIsHtml5ParserEnabled(true);
$pdfOptions->set('defaultFont', 'Arial');
$pdfOptions->set('isRemoteEnabled', true);
// Instantiate Dompdf with our options
$dompdf = new Dompdf($pdfOptions);
//$dompdf->setBasePath(realpath("/"));
// Retrieve the HTML generated in our twig file
$html = $this->renderView('feuille_emargement/pdf.html.twig', [
'emargements' => $emargements,
'session' => $session,
'footer' => true
]);
//$dompdf->setBasePath(realpath("/public"));
// Load HTML to Dompdf
$dompdf->loadHtml($html);
// (Optional) Setup the paper size and orientation 'portrait' or 'portrait'
$dompdf->setPaper('A4', 'portrait');
// Render the HTML as PDF
$dompdf->render();
$content = $dompdf->output();
$firstEmargement = array_pop($emargements);
$lieuId = (int)$firstEmargement["lieu"];
$lieu = $lieuRepository->find($lieuId);
$resultUpload = $sharepointApi->putEmargementAtelier($lieu,$session,$content);
$message = $resultUpload['message'];
return $this->redirectToRoute('feuille_emargement', ['message'=>$message], Response::HTTP_SEE_OTHER);
}
}