<?php
namespace App\Controller;
use App\Entity\Agenda;
use App\Form\AgendaType;
use App\Service\FileUploader;
use App\Repository\MenuRepository;
use App\Repository\AgendaRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class AgendaController extends AbstractController
{
private $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
#[Route('/admin/agenda', name: 'app_agenda_index', methods: ['GET','POST'])]
public function index(AgendaRepository $agendaRepository): Response
{
return $this->render('agenda/index.html.twig', [
'agendas' => $agendaRepository->findAll(),
]);
}
#[Route('/admin/agenda/{id}/desactive-status', name: 'app_agenda_desactive_status', methods: ['GET','POST'])]
public function desactiveStatus(Agenda $agenda, Request $request)
{
$agenda->setStatut(false);
$this->em->persist($agenda);
$this->em->flush();
return $this->redirectToRoute('app_agenda_index', [], Response::HTTP_SEE_OTHER);
}
#[Route('/admin/agenda/{id}/active-status', name: 'app_agenda_active_status', methods: ['GET','POST'])]
public function activeStatus(Agenda $agenda, Request $request)
{
$agenda->setStatut(true);
$this->em->persist($agenda);
$this->em->flush();
return $this->redirectToRoute('app_agenda_index', [], Response::HTTP_SEE_OTHER);
}
#[Route('admin/agenda/new', name: 'app_agenda_new', methods: ['GET', 'POST'])]
public function new(FileUploader $fileUploader, ValidatorInterface $validator, Request $request, MenuRepository $menuRepository, AgendaRepository $agendaRepository): Response
{
$submit = $request->request->get('submit');
$errors = null;
if ($submit) {
//dd($request);
$menu = new Agenda();
$menu->setMenu($menuRepository->find($request->request->get('menu')));
$menu->setTitle($request->request->get('libelle'));
$menu->setEventdate($request->request->get('eventdate'));
$menu->setEventhour($request->request->get('eventhour'));
$menu->setLocation($request->request->get('location'));
$menu->setStatut($request->request->get('statut'));
/* $menu->setPath($request->request->get('path')); */
$menu->setContent($request->request->get('observation'));
$tab = null;
$tabvid = null;
if ($request->files->get('file')) {
foreach ($request->files->get('file') as $value) {
$FileName = $fileUploader->upload($value);
$tab[] = $FileName;
}
$menu->setImage($tab);
}
if ($request->files->get('video')) {
foreach ($request->files->get('video') as $value) {
$FileName = $fileUploader->upload($value);
$tabvid[] = $FileName;
}
$menu->setVideo($tabvid);
}
$errors = $validator->validate($menu);
if (count($errors) > 0) {
$errorsString = (string) $errors;
}else {
$this->em->persist($menu);
$this->em->flush();
return $this->redirectToRoute('app_agenda_index', [], Response::HTTP_SEE_OTHER);
}
}
return $this->renderForm('agenda/new.html.twig', [
'menus' => $menuRepository->findAll(),
'errors' => $errors,
]);
}
/* #[Route('/{id}', name: 'app_agenda_show', methods: ['GET'])]
public function show(Agenda $agenda): Response
{
return $this->render('agenda/show.html.twig', [
'agenda' => $agenda,
]);
} */
#[Route('admin/agenda/edit/{id}', name: 'app_agenda_edit', methods: ['GET', 'POST'])]
public function edit(FileUploader $fileUploader,ValidatorInterface $validator, Request $request, MenuRepository $menuRepository, Agenda $agenda): Response
{
$submit = $request->request->get('submit');
/* $oldphoto = $sousmenu->getImage();
$oldvideo = $sousmenu->getVideo(); */
$errors = null;
if ($submit) {
$agenda->setMenu($menuRepository->find($request->request->get('menu')));
$agenda->setTitle($request->request->get('libelle'));
$agenda->setContent($request->request->get('observation'));
$agenda->setEventdate($request->request->get('eventdate'));
$agenda->setEventhour($request->request->get('eventhour'));
$agenda->setLocation($request->request->get('location'));
$agenda->setStatut($request->request->get('statut'));
$tab = null;
$tabvid = null;
if ($request->files->get('file')) {
// $FileName = $fileUploader->upload($request->files->get('file'));
foreach ($request->files->get('file') as $value) {
$FileName = $fileUploader->upload($value);
$tab[] = $FileName;
}
$agenda->setImage($tab);
} /* else {
if ($oldphoto) {
foreach ($oldphoto as $value) {
$tab[] = $value;
}
$sousmenu->setImage($tab);
}
} */
if ($request->files->get('video')) {
foreach ($request->files->get('video') as $value) {
$FileName = $fileUploader->upload($value);
$tabvid[] = $FileName;
}
$agenda->setVideo($tabvid);
}/* else {
if ($oldvideo) {
foreach ($oldvideo as $value) {
$tabvid[] = $value;
}
$sousmenu->setVideo($tabvid);
}
} */
$errors = $validator->validate($agenda);
if (count($errors) > 0) {
$errorsString = (string) $errors;
} else {
$this->em->persist($agenda);
$this->em->flush();
return $this->redirectToRoute('app_agenda_index', [], Response::HTTP_SEE_OTHER);
}
}
return $this->renderForm('agenda/edit.html.twig', [
'idMenu' => $agenda->getMenu()->getId(),
'idAgenda'=> $agenda->getId(),
'agenda' => $agenda,
'menus' => $menuRepository->findAll(),
'errors' => $errors,
]);
}
#[Route('admin/agenda/supprimer/{id}', name: 'app_agenda_delete', methods: ['POST'])]
public function delete(Request $request, Agenda $agenda, MenuRepository $menuRepository): Response
{
//dd( $menu);
if ($this->isCsrfTokenValid('delete'.$agenda->getId(), $request->request->get('_token'))) {
$this->em->remove($agenda);
$this->em->flush();
}
return $this->redirectToRoute('app_agenda_index', [], Response::HTTP_SEE_OTHER);
}
}