src/Controller/Backend/CertifConferenceController.php line 227

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Backend;
  3. use App\Entity\CertifConference;
  4. use App\Form\CertifConference\CertifConferenceType;
  5. use App\Repository\CertifConferenceRepository;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Dompdf\Dompdf;
  11. use Dompdf\Options;
  12. /**
  13.  * @Route("/certifConference")
  14.  */
  15. class CertifConferenceController extends AbstractController
  16. {
  17.     /**
  18.      * @Route("/", name="app_certif_conference_index", methods={"GET"})
  19.      */
  20.     public function index(CertifConferenceRepository $certifConferenceRepository): Response
  21.     {
  22.         if ($this->isGranted('ROLE_ADMIN')) {
  23.             return $this->render('backend/certif_conference/index.html.twig', [
  24.                 'certif_conferences' => $certifConferenceRepository->findAll()
  25.             ]);
  26.         } else {
  27.             return $this->redirectToRoute('app_login');
  28.         }
  29.     }
  30.     /**
  31.      * @Route("/index/{type}/{id}", name="app_certif_conference_index_front", methods={"GET"})
  32.      */
  33.     public function indexFront(CertifConferenceRepository $certifConferenceRepository, $id, $type): Response
  34.     {
  35.         $certifConference = null;
  36.         if ($type == 'congres') {
  37.             // $certifConference = $certifConferenceRepository->findBy(['congres' => $id], ['orateur' => 'DESC']);
  38.             $certifConference = $certifConferenceRepository->findByOteurCongres($id);
  39.             $certiWorkshop = $certifConferenceRepository->findBy(['IsWorkshop' => 1, 'congres' => $id], ['orateur' => 'DESC']);
  40.             $certiModerator = $certifConferenceRepository->findBy(['IsModerator' => 1, 'congres' => $id], ['orateur' => 'DESC']);
  41.             $certiDirectorWorkshop = $certifConferenceRepository->findBy(['IsDirectorWorkshop' => 1, 'congres' => $id], ['orateur' => 'DESC']);
  42.             $certiPoster = $certifConferenceRepository->findBy(['IsPoster' => 1, 'congres' => $id], ['orateur' => 'DESC']);
  43.             $certiCommunication = $certifConferenceRepository->findBy(['IsOralCommunication' => 1, 'congres' => $id], ['orateur' => 'DESC']);
  44.             $certiSpeakers = $certifConferenceRepository->findBy(['IsLecture' => 1, 'congres' => $id], ['orateur' => 'DESC']);
  45.         } elseif ($type == 'event') {
  46.             // $certifConference = $certifConferenceRepository->findBy(['event' => $id], ['orateur' => 'DESC']);
  47.             $certifConference = $certifConferenceRepository->findByOteurEvent($id);
  48.             $certifConference = $certifConferenceRepository->findBy(['event' => $id], ['orateur' => 'DESC']);
  49.             $certiWorkshop = $certifConferenceRepository->findBy(['IsWorkshop' => 1, 'event' => $id], ['orateur' => 'DESC']);
  50.             $certiModerator = $certifConferenceRepository->findBy(['IsModerator' => 1, 'event' => $id], ['orateur' => 'DESC']);
  51.             $certiDirectorWorkshop = $certifConferenceRepository->findBy(['IsDirectorWorkshop' => 1, 'event' => $id], ['orateur' => 'DESC']);
  52.             $certiPoster = $certifConferenceRepository->findBy(['IsPoster' => 1, 'event' => $id], ['orateur' => 'DESC']);
  53.             $certiCommunication = $certifConferenceRepository->findBy(['IsOralCommunication' => 1, 'event' => $id], ['orateur' => 'DESC']);
  54.             $certiSpeakers = $certifConferenceRepository->findBy(['IsLecture' => 1, 'event' => $id], ['orateur' => 'DESC']);
  55.         }
  56.         return $this->render('backend/certif_conference/indexFront.html.twig', [
  57.             'certif_conferences' => $certifConference, 'certiWorkshop' => $certiWorkshop,
  58.             'certiModerator' => $certiModerator, 'certiDirectorWorkshop' => $certiDirectorWorkshop,
  59.             'certiPoster' => $certiPoster, 'certiCommunication' => $certiCommunication, 'certiSpeakers' => $certiSpeakers
  60.         ]);
  61.     }
  62.     /**
  63.      * @Route("/indexFront/{type}/{id}", name="app_certif_conference_index_front_old", methods={"GET"})
  64.      */
  65.     public function indexFrontOld(CertifConferenceRepository $certifConferenceRepository, $id, $type): Response
  66.     {
  67.         return $this->redirectToRoute('app_certif_conference_index_front', ['id' => $id, 'type' => $type]);
  68.     }
  69.     /**
  70.      * @Route("/new", name="app_certif_conference_new", methods={"GET", "POST"})
  71.      */
  72.     public function new(Request $request, CertifConferenceRepository $certifConferenceRepository): Response
  73.     {
  74.         if ($this->isGranted('ROLE_ADMIN')) {
  75.             $certifConference = new CertifConference();
  76.             $form = $this->createForm(CertifConferenceType::class, $certifConference);
  77.             $form->handleRequest($request);
  78.             if ($form->isSubmitted() && $form->isValid()) {
  79.                 if ($certifConference->getCongres() != NULL) {
  80.                     $certifConference->setIsCongres(true);
  81.                     $certifConference->setIsEvent(false);
  82.                 } elseif ($certifConference->getEvent() != NULL) {
  83.                     $certifConference->setIsCongres(false);
  84.                     $certifConference->setIsEvent(true);
  85.                 }
  86.                 $certifConferenceRepository->add($certifConference, true);
  87.                 return $this->redirectToRoute('app_certif_conference_index', [], Response::HTTP_SEE_OTHER);
  88.             }
  89.             return $this->renderForm('backend/certif_conference/new.html.twig', [
  90.                 'certif_conference' => $certifConference,
  91.                 'form' => $form,
  92.             ]);
  93.         } else {
  94.             return $this->redirectToRoute('app_login');
  95.         }
  96.     }
  97.     /**
  98.      * @Route("/{id}", name="app_certif_conference_show", methods={"GET"})
  99.      */
  100.     public function show(CertifConference $certifConference): Response
  101.     {
  102.         if ($this->isGranted('ROLE_ADMIN')) {
  103.             return $this->render('backend/certif_conference/show.html.twig', [
  104.                 'certif_conference' => $certifConference,
  105.             ]);
  106.         } else {
  107.             return $this->redirectToRoute('app_login');
  108.         }
  109.     }
  110.     /**
  111.      * @Route("/{id}/edit", name="app_certif_conference_edit", methods={"GET", "POST"})
  112.      */
  113.     public function edit(Request $request, CertifConference $certifConference, CertifConferenceRepository $certifConferenceRepository): Response
  114.     {
  115.         if ($this->isGranted('ROLE_ADMIN')) {
  116.             $form = $this->createForm(CertifConferenceType::class, $certifConference);
  117.             $form->handleRequest($request);
  118.             if ($form->isSubmitted() && $form->isValid()) {
  119.                 if ($certifConference->getCongres() != NULL) {
  120.                     $certifConference->setIsCongres(true);
  121.                 } elseif ($certifConference->getEvent() != NULL) {
  122.                     $certifConference->setIsEvent(true);
  123.                 }
  124.                 $certifConferenceRepository->add($certifConference, true);
  125.                 return $this->redirectToRoute('app_certif_conference_index', [], Response::HTTP_SEE_OTHER);
  126.             }
  127.             return $this->renderForm('backend/certif_conference/edit.html.twig', [
  128.                 'certif_conference' => $certifConference,
  129.                 'form' => $form,
  130.             ]);
  131.         } else {
  132.             return $this->redirectToRoute('app_login');
  133.         }
  134.     }
  135.     /**
  136.      * @Route("/{id}", name="app_certif_conference_delete", methods={"POST"})
  137.      */
  138.     public function delete(Request $request, CertifConference $certifConference, CertifConferenceRepository $certifConferenceRepository): Response
  139.     {
  140.         if ($this->isCsrfTokenValid('delete' . $certifConference->getId(), $request->request->get('_token'))) {
  141.             $certifConferenceRepository->remove($certifConference, true);
  142.         }
  143.         return $this->redirectToRoute('app_certif_conference_index', [], Response::HTTP_SEE_OTHER);
  144.     }
  145.     /**
  146.      * @Route("/download-certif-conference/{id}", name="certificats-conference-download")
  147.      */
  148.     public function certificats_participation(CertifConferenceRepository $certifConferenceRepository, $id)
  149.     {
  150.         $certifConference = $certifConferenceRepository->findOneBy(['id' => $id]);
  151.         $pdfOptions = new Options();
  152.         $pdfOptions->set('defaultFont', 'Arial');
  153.         $pdfOptions->set('isRemoteEnabled', true); // temp folder with write permission
  154.         $pdfOptions->setIsRemoteEnabled(true);
  155.         // Instantiate Dompdf with our options
  156.         $dompdf = new Dompdf($pdfOptions);
  157.         // Retrieve the HTML generated in our twig file
  158.         $html = $this->renderView('backend/certif_conference/certifConferencePdf.html.twig', ['certifConference' => $certifConference]);
  159.         // Load HTML to Dompdf
  160.         $dompdf->loadHtml($html);
  161.         // $paper_size = array(0,0,360,360);
  162.         // (Optional) Setup the paper size and orientation 'portrait' or 'portrait'
  163.         $dompdf->setPaper('A4', 'portrait');
  164.         // Render the HTML as PDF
  165.         $dompdf->render();
  166.         // Output the generated PDF to Browser (force download)
  167.         $dompdf->stream("Certificat-" . $certifConference->getOrateur() . ".pdf", [
  168.             "Attachment" => false
  169.         ]);
  170.         return $this->render('backend/certif_conference/index.html.twig', array());
  171.     }
  172.     /**
  173.      * @Route("/download-certif-conference-participation/{id}", name="certificats-conference-download-participation")
  174.      */
  175.     public function certificats_of_attendance(CertifConferenceRepository $certifConferenceRepository, $id)
  176.     {
  177.         $certifConference = $certifConferenceRepository->findOneBy(['id' => $id]);
  178.         $pdfOptions = new Options();
  179.         $pdfOptions->set('defaultFont', 'Arial');
  180.         $pdfOptions->set('isRemoteEnabled', true); // temp folder with write permission
  181.         $pdfOptions->setIsRemoteEnabled(true);
  182.         // Instantiate Dompdf with our options
  183.         $dompdf = new Dompdf($pdfOptions);
  184.         // Retrieve the HTML generated in our twig file
  185.         $html = $this->renderView('backend/certif_conference/certifConferenceOfAttendancePdf.html.twig', ['certifConference' => $certifConference]);
  186.         // Load HTML to Dompdf
  187.         $dompdf->loadHtml($html);
  188.         // $paper_size = array(0,0,360,360);
  189.         // (Optional) Setup the paper size and orientation 'portrait' or 'portrait'
  190.         $dompdf->setPaper('A4', 'portrait');
  191.         // Render the HTML as PDF
  192.         $dompdf->render();
  193.         // Output the generated PDF to Browser (force download)
  194.         $dompdf->stream("Certificat-" . $certifConference->getOrateur() . ".pdf", [
  195.             "Attachment" => false
  196.         ]);
  197.         return $this->render('backend/certif_conference/index.html.twig', array());
  198.     }
  199. }