<?php
namespace App\Controller;
use App\Entity\Videos;
use App\Service\FileUploader;
use App\Repository\MenuRepository;
use App\Controller\VideosController;
use App\Repository\VideosRepository;
use App\Repository\SousmenuRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
#[Route('/video')]
class VideosController extends AbstractController
{
private $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
#[Route('/video', name: 'app_video_index', methods: ['GET','POST'])]
public function index(VideosRepository $videosRepository,MenuRepository $menuRepository, SousmenuRepository $sousmenuRepository): Response
{
return $this->render('videos/index.html.twig', [
'videos' => $videosRepository->findAll(),
'menus' => $menuRepository->findAll(),
'sousmenus'=>$sousmenuRepository->findAll(),
]);
}
#[Route('video/{id}/desactive-status', name: 'app_video_desactive_status', methods: ['GET','POST'])]
public function desactiveStatus(Videos $video, Request $request)
{
$video->setStatut(false);
$this->em->persist($video);
$this->em->flush();
return $this->redirectToRoute('app_video_index', [], Response::HTTP_SEE_OTHER);
}
#[Route('video/{id}/active-status', name: 'app_video_active_status', methods: ['GET','POST'])]
public function activeStatus(Videos $video, Request $request)
{
$video->setStatut(true);
$this->em->persist($video);
$this->em->flush();
return $this->redirectToRoute('app_video_index', [], Response::HTTP_SEE_OTHER);
}
#[Route('/new', name: 'app_video_new', methods: ['GET', 'POST'])]
public function new(FileUploader $fileUploader, ValidatorInterface $validator, Request $request, SousmenuRepository $sousmenuRepository, MenuRepository $menuRepository): Response
{
$submit = $request->request->get('submit');
$errors = null;
if ($submit) {
$menu = new Videos();
$menu->setTitle($request->request->get('title'));
$menu->setUrl($request->request->get('url'));
$menu->setStatut($request->request->get('statut'));
$errors = $validator->validate($menu);
if (count($errors) > 0) {
$errorsString = (string) $errors;
}
else {
$this->em->persist($menu);
$this->em->flush();
return $this->redirectToRoute('app_video_index', [], Response::HTTP_SEE_OTHER);
}
}
return $this->renderForm('videos/new.html.twig', [
'menus' => $menuRepository->findAll(),
'sousmenus' => $sousmenuRepository->findAll(),
'errors' => $errors,
]);
}
#[Route('video/edit/{id}/', name: 'app_video_edit', methods: ['GET', 'POST'])]
public function edit(FileUploader $fileUploader, ValidatorInterface $validator, Request $request, MenuRepository $menuRepository, Videos $video): Response
{
$submit = $request->request->get('submit');
$errors = null;
if ($submit) {
$video->setTitle($request->request->get('title'));
$video->setStatut($request->request->get('statut'));
$video->setUrl($request->request->get('url'));
$errors = $validator->validate($video);
if (count($errors) > 0) {
$errorsString = (string) $errors;
}else {
$this->em->persist($video);
$this->em->flush();
return $this->redirectToRoute('app_video_index', [], Response::HTTP_SEE_OTHER);
}
}
return $this->renderForm('videos/edit.html.twig', [
'idVideo'=> $video->getId(),
'video' => $video,
'menus' => $menuRepository->findAll(),
'errors' => $errors,
]);
}
#[Route('video/supprimer/{id}', name: 'app_video_delete', methods: ['POST'])]
public function delete(Request $request, Videos $video, MenuRepository $menuRepository): Response
{
if ($this->isCsrfTokenValid('delete'.$video->getId(), $request->request->get('_token'))) {
$this->em->remove($video);
$this->em->flush();
}
return $this->redirectToRoute('app_video_index', [], Response::HTTP_SEE_OTHER);
}
}