<?php
namespace App\Controller\Backend;
use App\Entity\CertifConference;
use App\Form\CertifConference\CertifConferenceType;
use App\Repository\CertifConferenceRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Dompdf\Dompdf;
use Dompdf\Options;
/**
* @Route("/certifConference")
*/
class CertifConferenceController extends AbstractController
{
/**
* @Route("/", name="app_certif_conference_index", methods={"GET"})
*/
public function index(CertifConferenceRepository $certifConferenceRepository): Response
{
if ($this->isGranted('ROLE_ADMIN')) {
return $this->render('backend/certif_conference/index.html.twig', [
'certif_conferences' => $certifConferenceRepository->findAll()
]);
} else {
return $this->redirectToRoute('app_login');
}
}
/**
* @Route("/index/{type}/{id}", name="app_certif_conference_index_front", methods={"GET"})
*/
public function indexFront(CertifConferenceRepository $certifConferenceRepository, $id, $type): Response
{
$certifConference = null;
if ($type == 'congres') {
// $certifConference = $certifConferenceRepository->findBy(['congres' => $id], ['orateur' => 'DESC']);
$certifConference = $certifConferenceRepository->findByOteurCongres($id);
$certiWorkshop = $certifConferenceRepository->findBy(['IsWorkshop' => 1, 'congres' => $id], ['orateur' => 'DESC']);
$certiModerator = $certifConferenceRepository->findBy(['IsModerator' => 1, 'congres' => $id], ['orateur' => 'DESC']);
$certiDirectorWorkshop = $certifConferenceRepository->findBy(['IsDirectorWorkshop' => 1, 'congres' => $id], ['orateur' => 'DESC']);
$certiPoster = $certifConferenceRepository->findBy(['IsPoster' => 1, 'congres' => $id], ['orateur' => 'DESC']);
$certiCommunication = $certifConferenceRepository->findBy(['IsOralCommunication' => 1, 'congres' => $id], ['orateur' => 'DESC']);
$certiSpeakers = $certifConferenceRepository->findBy(['IsLecture' => 1, 'congres' => $id], ['orateur' => 'DESC']);
} elseif ($type == 'event') {
// $certifConference = $certifConferenceRepository->findBy(['event' => $id], ['orateur' => 'DESC']);
$certifConference = $certifConferenceRepository->findByOteurEvent($id);
$certifConference = $certifConferenceRepository->findBy(['event' => $id], ['orateur' => 'DESC']);
$certiWorkshop = $certifConferenceRepository->findBy(['IsWorkshop' => 1, 'event' => $id], ['orateur' => 'DESC']);
$certiModerator = $certifConferenceRepository->findBy(['IsModerator' => 1, 'event' => $id], ['orateur' => 'DESC']);
$certiDirectorWorkshop = $certifConferenceRepository->findBy(['IsDirectorWorkshop' => 1, 'event' => $id], ['orateur' => 'DESC']);
$certiPoster = $certifConferenceRepository->findBy(['IsPoster' => 1, 'event' => $id], ['orateur' => 'DESC']);
$certiCommunication = $certifConferenceRepository->findBy(['IsOralCommunication' => 1, 'event' => $id], ['orateur' => 'DESC']);
$certiSpeakers = $certifConferenceRepository->findBy(['IsLecture' => 1, 'event' => $id], ['orateur' => 'DESC']);
}
return $this->render('backend/certif_conference/indexFront.html.twig', [
'certif_conferences' => $certifConference, 'certiWorkshop' => $certiWorkshop,
'certiModerator' => $certiModerator, 'certiDirectorWorkshop' => $certiDirectorWorkshop,
'certiPoster' => $certiPoster, 'certiCommunication' => $certiCommunication, 'certiSpeakers' => $certiSpeakers
]);
}
/**
* @Route("/indexFront/{type}/{id}", name="app_certif_conference_index_front_old", methods={"GET"})
*/
public function indexFrontOld(CertifConferenceRepository $certifConferenceRepository, $id, $type): Response
{
return $this->redirectToRoute('app_certif_conference_index_front', ['id' => $id, 'type' => $type]);
}
/**
* @Route("/new", name="app_certif_conference_new", methods={"GET", "POST"})
*/
public function new(Request $request, CertifConferenceRepository $certifConferenceRepository): Response
{
if ($this->isGranted('ROLE_ADMIN')) {
$certifConference = new CertifConference();
$form = $this->createForm(CertifConferenceType::class, $certifConference);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
if ($certifConference->getCongres() != NULL) {
$certifConference->setIsCongres(true);
$certifConference->setIsEvent(false);
} elseif ($certifConference->getEvent() != NULL) {
$certifConference->setIsCongres(false);
$certifConference->setIsEvent(true);
}
$certifConferenceRepository->add($certifConference, true);
return $this->redirectToRoute('app_certif_conference_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('backend/certif_conference/new.html.twig', [
'certif_conference' => $certifConference,
'form' => $form,
]);
} else {
return $this->redirectToRoute('app_login');
}
}
/**
* @Route("/{id}", name="app_certif_conference_show", methods={"GET"})
*/
public function show(CertifConference $certifConference): Response
{
if ($this->isGranted('ROLE_ADMIN')) {
return $this->render('backend/certif_conference/show.html.twig', [
'certif_conference' => $certifConference,
]);
} else {
return $this->redirectToRoute('app_login');
}
}
/**
* @Route("/{id}/edit", name="app_certif_conference_edit", methods={"GET", "POST"})
*/
public function edit(Request $request, CertifConference $certifConference, CertifConferenceRepository $certifConferenceRepository): Response
{
if ($this->isGranted('ROLE_ADMIN')) {
$form = $this->createForm(CertifConferenceType::class, $certifConference);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
if ($certifConference->getCongres() != NULL) {
$certifConference->setIsCongres(true);
} elseif ($certifConference->getEvent() != NULL) {
$certifConference->setIsEvent(true);
}
$certifConferenceRepository->add($certifConference, true);
return $this->redirectToRoute('app_certif_conference_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('backend/certif_conference/edit.html.twig', [
'certif_conference' => $certifConference,
'form' => $form,
]);
} else {
return $this->redirectToRoute('app_login');
}
}
/**
* @Route("/{id}", name="app_certif_conference_delete", methods={"POST"})
*/
public function delete(Request $request, CertifConference $certifConference, CertifConferenceRepository $certifConferenceRepository): Response
{
if ($this->isCsrfTokenValid('delete' . $certifConference->getId(), $request->request->get('_token'))) {
$certifConferenceRepository->remove($certifConference, true);
}
return $this->redirectToRoute('app_certif_conference_index', [], Response::HTTP_SEE_OTHER);
}
/**
* @Route("/download-certif-conference/{id}", name="certificats-conference-download")
*/
public function certificats_participation(CertifConferenceRepository $certifConferenceRepository, $id)
{
$certifConference = $certifConferenceRepository->findOneBy(['id' => $id]);
$pdfOptions = new Options();
$pdfOptions->set('defaultFont', 'Arial');
$pdfOptions->set('isRemoteEnabled', true); // temp folder with write permission
$pdfOptions->setIsRemoteEnabled(true);
// Instantiate Dompdf with our options
$dompdf = new Dompdf($pdfOptions);
// Retrieve the HTML generated in our twig file
$html = $this->renderView('backend/certif_conference/certifConferencePdf.html.twig', ['certifConference' => $certifConference]);
// Load HTML to Dompdf
$dompdf->loadHtml($html);
// $paper_size = array(0,0,360,360);
// (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("Certificat-" . $certifConference->getOrateur() . ".pdf", [
"Attachment" => false
]);
return $this->render('backend/certif_conference/index.html.twig', array());
}
/**
* @Route("/download-certif-conference-participation/{id}", name="certificats-conference-download-participation")
*/
public function certificats_of_attendance(CertifConferenceRepository $certifConferenceRepository, $id)
{
$certifConference = $certifConferenceRepository->findOneBy(['id' => $id]);
$pdfOptions = new Options();
$pdfOptions->set('defaultFont', 'Arial');
$pdfOptions->set('isRemoteEnabled', true); // temp folder with write permission
$pdfOptions->setIsRemoteEnabled(true);
// Instantiate Dompdf with our options
$dompdf = new Dompdf($pdfOptions);
// Retrieve the HTML generated in our twig file
$html = $this->renderView('backend/certif_conference/certifConferenceOfAttendancePdf.html.twig', ['certifConference' => $certifConference]);
// Load HTML to Dompdf
$dompdf->loadHtml($html);
// $paper_size = array(0,0,360,360);
// (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("Certificat-" . $certifConference->getOrateur() . ".pdf", [
"Attachment" => false
]);
return $this->render('backend/certif_conference/index.html.twig', array());
}
}