| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 | 
							- <?php
 
- namespace App\Controller;
 
- use App\Entity\Commentaire;
 
- use App\Entity\Realisateur;
 
- use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
 
- use Symfony\Component\Security\Core\Security;
 
- use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
 
- use Symfony\Component\HttpFoundation\JsonResponse;
 
- use Symfony\Component\Routing\Annotation\Route;
 
- use Symfony\Component\HttpFoundation\Request;
 
- use App\Entity\Film;
 
- use App\Form\CommentaireType;
 
- use App\Form\FilmType;
 
- use App\Repository\CommentaireRepository;
 
- use App\Repository\FilmRepository;
 
- use App\Repository\GenreRepository;
 
- use App\Repository\RealisateurRepository;
 
- use App\Service\CommentaireManager;
 
- use App\Service\FilmManager;
 
- use App\Service\OptionsManager;
 
- use App\Service\TmdbApiService;
 
- use Symfony\Component\Form\FormFactoryInterface;
 
- use Symfony\Component\HtmlSanitizer\HtmlSanitizerInterface;
 
- use Symfony\Component\HttpFoundation\Response;
 
- use Symfony\Component\Serializer\SerializerInterface;
 
- class VideothequeController extends AbstractController
 
- {
 
- 	#[Route("/", name: "videotheque_liste")]
 
- 	public function listeAction(Request $request, FilmRepository $repo, OptionsManager $options): Response
 
- 	{
 
-         $listeFilms = $repo->findTous();
 
- 		return $this->render('videotheque/liste_'.$options->vue().'.html.twig', array(
 
-             'listeFilms'	=>	$listeFilms,
 
-             'titre'         =>  'Liste complète',
 
- 		));
 
-     }
 
-     #[Route("/prochaines-sorties", name: "prochaines_sorties")]
 
-     public function prochainesSorties(Request $request, FilmRepository $repo, OptionsManager $options): Response
 
-     {
 
-         $listeFilms = $repo->findProchaines();
 
-         return $this->render('videotheque/liste_'.$options->vue().'.html.twig', array(
 
-             'listeFilms'	=>	$listeFilms,
 
-             'titre'         =>  'Prochaines sorties',
 
- 		));
 
-     }
 
-     #[Route("/liste-by/{id}", name: "videotheque_listepargenre")]
 
- 	public function  listeParGenreAction(\App\Entity\Genre $genre, FilmRepository $repo, OptionsManager $options): Response
 
-     {
 
-         $films = $repo->findFilmWithGenre(array($genre->getName()));
 
-         return $this->render('videotheque/liste_'.$options->vue().'.html.twig', array(
 
-             'listeFilms'    => $films,
 
-             'titre'         => 'Films par catégorie : '.$genre->getName()
 
-         ));
 
-     }
 
-     #[Route("/liste-by_real/{id}", name: "videotheque_listeparreal")]
 
-     public function  listeParRealisateurAction(Realisateur $realisateur, FilmRepository $repo, OptionsManager $options): Response
 
-     {
 
-         $films = $repo->findFilmWithReal(array($realisateur->getNomComplet()));
 
-         return $this->render('videotheque/liste_'.$options->vue().'.html.twig', array(
 
-             'listeFilms'    => $films,
 
-             'titre'         => 'Films par réalisateur : '.$realisateur->getNomComplet()
 
-         ));
 
-     }
 
- 	#[Route("/ajouter/{idtmdb}", name: "videotheque_ajouter")]
 
- 	public function ajouterAction(Request $request, FilmManager $filmManager, TmdbApiService $tmdbApiService, string $idtmdb=null): Response
 
- 	{
 
-         if ($idtmdb !== null) {
 
-             $film = $tmdbApiService->hydrateFilm($idtmdb);
 
-         } else {
 
-     		$film = new Film;
 
-         }
 
- 		$form = $this->createForm(FilmType::class, $film);
 
- 		$form->handleRequest($request);
 
- 		if ($form->isSubmitted() && $form->isValid())
 
- 		{
 
- 			$filmManager->addFilm($film);
 
- 			$this->addFlash('success', 'Le film a été ajouté');
 
- 			return $this->redirectToRoute('videotheque_voirfilm', array('id'=>$film->getId()));
 
- 		}
 
- 		return $this->renderForm('videotheque/ajouter.html.twig', array(
 
- 			'form'	=>	$form,
 
- 		));
 
- 	}
 
-     #[Route("/addtmdb", name: "videotheque_ajouter_tmdb")]
 
-     public function ajouterTmdb(Request $request, TmdbApiService $tmdbApiService, HtmlSanitizerInterface $htmlSanitizerInterface): Response
 
-     {
 
-         $films = array();
 
-         $nbFilms = 0;
 
-         $nbPages = 0;
 
-         /*
 
-         $page = (int) $htmlSanitizerInterface->sanitize($request->query->get('page', 1));
 
-         $recherche = $htmlSanitizerInterface->sanitize($request->query->get('query', ""));
 
-         */
 
-         
 
-         $page = (int) $request->query->get('page', 1);
 
-         $recherche = $request->query->get('query', "");
 
-         dump ($page);
 
-         if ($tmdbApiService->query($recherche, $page)) {
 
-             $nbFilms = $tmdbApiService->countResults();
 
-             $nbPages = $tmdbApiService->countPages();
 
-             $films = $tmdbApiService->getFilms();
 
-         }
 
-         
 
-         return $this->renderForm('videotheque/add_tmdb.html.twig', [
 
-             'titre' => 'Ajouter via TheMovieDB.org',
 
-             'films'  => $films,
 
-             'nbFilms'    => $nbFilms,
 
-             'nbPages'   => $nbPages,
 
-             'page'  => $page,
 
-             'recherche' => $recherche
 
-         ]);
 
-     }
 
- 	#[Route("/modifier/{id}", name: "videotheque_modifier")]
 
- 	public function modifierAction(Request $request, Film $film, FilmManager $filmManager): Response
 
- 	{
 
- 		$form = $this->createForm(FilmType::class, $film);
 
- 		$form->handleRequest($request);
 
- 		if ($form->isSubmitted() && $form->isValid())
 
- 		{
 
-             $filmManager->editFilm($film);
 
- 			$this->addFlash('success', 'Le film a été modifié');
 
- 			return $this->redirectToRoute('videotheque_voirfilm',array('id'=>$film->getId()));
 
- 		}
 
- 		return $this->renderForm('videotheque/modifier.html.twig', array(
 
- 			'form'	=> $form,
 
- 		));
 
- 	}
 
- 	#[Route("/supprimer/{id}", name: "videotheque_supprimer")]
 
-     #[IsGranted("ROLE_ADMIN")]
 
- 	public function supprimerAction(Request $request, Film $film, FilmManager $filmManager, FormFactoryInterface $ffi): Response
 
- 	{
 
-         $form = $ffi->create();
 
-         $form->handleRequest($request);
 
-         if ($form->isSubmitted() && $form->isValid())
 
-         {
 
-             $filmManager->delFilm($film);
 
-             $this->addFlash('success', 'Le film '.$film->getTitre().' a bien été supprimé.');
 
-             return $this->redirectToRoute('videotheque_liste');
 
-         }
 
- 		return $this->renderForm('videotheque/supprimer.html.twig', array(
 
- 			'film'  =>  $film,
 
-             'form'  =>  $form
 
- 		));
 
- 	}
 
- 	#[Route("/fichefilm/{id}", name: "videotheque_voirfilm")]
 
- 	public function voirFilmAction(Request $request, \App\Entity\Film $film, CommentaireManager $cm, Security $security, CommentaireRepository $repo): Response
 
-     {
 
-         if ($security->isGranted('IS_AUTHENTICATED_REMEMBERED'))
 
-         {
 
-             $commentaireUser = $repo->findOneBy(array('film'=>$film, 'user'=>$this->getUser()));
 
-             if (is_null($commentaireUser))
 
-             {
 
-                 $commentaireUser = new Commentaire();
 
-             }
 
-             $form = $this->createForm(CommentaireType::class, $commentaireUser);
 
-             $form->handleRequest($request);
 
-             if ($form->isSubmitted() && $form->isValid())
 
-             {
 
-                 $cm->delEditAdd($commentaireUser, $film);
 
-                 $this->addFlash('success', 'Le commentaire a été posté');
 
-                 return $this->redirectToRoute('videotheque_voirfilm', array('id' => $film->getId()));
 
-             }
 
-         } else {
 
-             $form = $this->createForm(CommentaireType::class, null);
 
-         }
 
-         
 
-         return $this->renderForm('videotheque/voirfilm.html.twig', array(
 
-             'film' => $film,
 
-             'form'  =>  $form
 
-         ));
 
-     }
 
-     #[Route("/ajax_req_realisateurs", name: "videotheque_ajax_realisateurs")]
 
-     public function ajaxRealisateurs(RealisateurRepository $repo, SerializerInterface $serializer): Response
 
-     {
 
-         $realisateurs = $repo->findNomsComplets();
 
-         $liste = array();
 
-         foreach ($realisateurs as $key=>$nom)
 
-         {
 
-             $liste[$key] = $serializer->serialize($nom, 'json');
 
-         }
 
-         return new JsonResponse($liste);
 
-     }
 
-     #[Route("/ajax_req_genres", name: "videotheque_ajax_genres")]
 
-     public function ajaxGenres(GenreRepository $repo, SerializerInterface $serializer): Response
 
-     {
 
-         $genres = $repo->findGenres();
 
-         $liste = array();
 
-         foreach ($genres as $key=>$nom)
 
-         {
 
-             $liste[$key] = $serializer->serialize($nom, 'json');
 
-         }
 
-         return new JsonResponse($liste);
 
-     }
 
- }
 
 
  |