<?php
namespace App\Controller;
use App\Entity\Evenements;
use App\Form\EvenementsType;
use App\Repository\EvenementsRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use App\Repository\ReservationsRepository;
/**
* @Route("/evenements")
* @Security("is_granted('ROLE_ADMIN')")
*/
class EvenementsController extends AbstractController
{
/**
* @Route("/", name="app_evenements_index", methods={"GET"})
*/
public function index(EvenementsRepository $evenementsRepository,ReservationsRepository $reservations): Response
{
$events = array();
$ev = $evenementsRepository->findBy(array('Archive'=>0));
$i=-1;
foreach($ev as $res2)
{
$i++;
if(empty($res2->getEvenements()))
{
$type = 'billet';
}
else
{
$type = 'abo';
}
// CALCUL DES PLACES A LUNITE
$resa = $reservations->findBy(array('Evenements'=>$res2));
$pRes = 0;
foreach($resa as $res)
{
$pRes = $pRes + $res->getNbPlaces();
}
// CALCUL DES PLACES POUR L'ABO
if(!empty($res2->getEvenements()))
{
$resa = $reservations->findBy(array('Evenements'=>$res2->getEvenements()));
foreach($resa as $res)
{
$pRes = $pRes + $res->getNbPlaces();
}
}
$pDispo = $res2->getNbPlaces() - $pRes;
$events[$i]['NbPlaces'] = $pDispo;
$events[$i]['id'] = $res2->getId();
$events[$i]['Titre'] = $res2->getTitre();
$events[$i]['Image'] = $res2->getImage();
$events[$i]['Date'] = $res2->getDate();
$events[$i]['billeterie'] = $res2->getBilleterie();
$events[$i]['CategoriesEvenements'] = $res2->getCategoriesEvenements()->getLibelle();
}
return $this->render('evenements/index.html.twig', [
'evenements' => $events,
]);
}
/**
* @Route("/new", name="app_evenements_new", methods={"GET", "POST"})
*/
public function new(Request $request, EvenementsRepository $evenementsRepository): Response
{
$evenement = new Evenements();
$form = $this->createForm(EvenementsType::class, $evenement);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$file = $form->get('Image')->getData();
if($file != 'ok') {
$path = '/';
$fileName = uniqid().'-'.$file->getClientOriginalName();
$file->move(
$this->getParameter('uploads_directory').$path,
$fileName
);
$evenement->setImage($fileName);
}
$evenement->setArchive(0);
$evenementsRepository->add($evenement, true);
return $this->redirectToRoute('app_evenements_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('evenements/new.html.twig', [
'evenement' => $evenement,
'image'=>'',
'form' => $form,
]);
}
/**
* @Route("/{id}", name="app_evenements_show", methods={"GET"})
*/
public function show(Evenements $evenement): Response
{
return $this->render('evenements/show.html.twig', [
'evenement' => $evenement,
]);
}
/**
* @Route("/{id}/edit", name="app_evenements_edit", methods={"GET", "POST"})
*/
public function edit(Request $request, Evenements $evenement, EvenementsRepository $evenementsRepository): Response
{
$oldImage = $evenement->getImage();
$form = $this->createForm(EvenementsType::class, $evenement);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$file = $form->get('Image')->getData();
if($file != 'ok') {
$path = '/';
$fileName = uniqid().'-'.$file->getClientOriginalName();
$file->move(
$this->getParameter('uploads_directory').$path,
$fileName
);
$evenement->setImage($fileName);
}
else
{
$evenement->setImage($oldImage);
}
$evenementsRepository->add($evenement, true);
return $this->redirectToRoute('app_evenements_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('evenements/edit.html.twig', [
'evenement' => $evenement,
'image'=>$evenement->getImage(),
'form' => $form,
]);
}
/**
* @Route("/{id}", name="app_evenements_delete", methods={"POST"})
*/
public function delete(Request $request, Evenements $evenement, EvenementsRepository $evenementsRepository): Response
{
if ($this->isCsrfTokenValid('delete'.$evenement->getId(), $request->request->get('_token'))) {
$evenement->setArchive(1);
$evenementsRepository->add($evenement, true);
}
return $this->redirectToRoute('app_evenements_index', [], Response::HTTP_SEE_OTHER);
}
}