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);
- }
- }
|