VideothequeController.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Commentaire;
  4. use App\Entity\Realisateur;
  5. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  6. use Symfony\Component\Security\Core\Security;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\JsonResponse;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use App\Entity\Film;
  12. use App\Form\CommentaireType;
  13. use App\Form\FilmType;
  14. use App\Repository\CommentaireRepository;
  15. use App\Repository\FilmRepository;
  16. use App\Repository\GenreRepository;
  17. use App\Repository\RealisateurRepository;
  18. use App\Service\CommentaireManager;
  19. use App\Service\FilmManager;
  20. class VideothequeController extends AbstractController
  21. {
  22. /**
  23. * @Route("/", name="videotheque_liste")
  24. */
  25. public function listeAction(Request $request, FilmRepository $repo)
  26. {
  27. $listeFilms = $repo->findTous();
  28. if ($this->getUser()->getProfile()->getView() === 0) {
  29. $type = "tableaux";
  30. } else {
  31. $type = "vignettes";
  32. }
  33. return $this->render("videotheque/liste_$type.html.twig", array(
  34. 'listeFilms' => $listeFilms,
  35. 'titre' => 'Liste complète',
  36. ));
  37. }
  38. /**
  39. * @Route("/liste-by/{id}", name="videotheque_listepargenre")
  40. */
  41. public function listeParGenreAction(\App\Entity\Genre $genre, FilmRepository $repo)
  42. {
  43. $films = $repo->findFilmWithGenre(array($genre->getName()));
  44. if ($this->getUser()->getProfile()->getView() === 0) {
  45. $type = "tableaux";
  46. } else {
  47. $type = "vignettes";
  48. }
  49. return $this->render("videotheque/liste_$type.html.twig", array(
  50. 'listeFilms' => $films,
  51. 'titre' => 'Films par catégorie : '.$genre->getName()
  52. ));
  53. }
  54. /**
  55. * @Route("/liste-by_real/{id}", name="videotheque_listeparreal")
  56. */
  57. public function listeParRealisateurAction(Realisateur $realisateur, FilmRepository $repo)
  58. {
  59. $films = $repo->findFilmWithReal(array($realisateur->getNomComplet()));
  60. if ($this->getUser()->getProfile()->getView() === 0) {
  61. $type = "tableaux";
  62. } else {
  63. $type = "vignettes";
  64. }
  65. return $this->render("videotheque/liste_$type.html.twig", array(
  66. 'listeFilms' => $films,
  67. 'titre' => 'Films par réalisateur : '.$realisateur->getNomComplet()
  68. ));
  69. }
  70. /**
  71. * @Route("/ajouter", name="videotheque_ajouter")
  72. */
  73. public function ajouterAction(Request $request, FilmManager $filmManager)
  74. {
  75. $film = new Film;
  76. $form = $this->createForm(FilmType::class, $film);
  77. $form->handleRequest($request);
  78. if ($form->isSubmitted() && $form->isValid())
  79. {
  80. $filmManager->addFilm($film);
  81. $this->addFlash('success', 'Le film a été ajouté');
  82. return $this->redirectToRoute('videotheque_voirfilm', array('id'=>$film->getId()));
  83. }
  84. return $this->render('videotheque/ajouter.html.twig', array(
  85. 'form' => $form->createView(),
  86. ));
  87. }
  88. /**
  89. * @Route("/modifier/{id}", name="videotheque_modifier")
  90. */
  91. public function modifierAction(Request $request, Film $film, FilmManager $filmManager)
  92. {
  93. $form = $this->createForm(FilmType::class, $film);
  94. $form->handleRequest($request);
  95. if ($form->isSubmitted() && $form->isValid())
  96. {
  97. $filmManager->editFilm($film);
  98. $this->addFlash('success', 'Le film a été modifié');
  99. return $this->redirectToRoute('videotheque_voirfilm',array('id'=>$film->getId()));
  100. }
  101. return $this->render('videotheque/modifier.html.twig', array(
  102. 'form' => $form->createView(),
  103. ));
  104. }
  105. /**
  106. * @Route("/supprimer/{id}", name="videotheque_supprimer")
  107. * @IsGranted("ROLE_ADMIN")
  108. */
  109. public function supprimerAction(Request $request, Film $film, FilmManager $filmManager)
  110. {
  111. $form = $this->get('form.factory')->create();
  112. $form->handleRequest($request);
  113. if ($form->isSubmitted() && $form->isValid())
  114. {
  115. $filmManager->delFilm($film);
  116. $this->addFlash('success', 'Le film '.$film->getTitre().' a bien été supprimé.');
  117. return $this->redirectToRoute('videotheque_liste');
  118. }
  119. return $this->render('videotheque/supprimer.html.twig', array(
  120. 'film' => $film,
  121. 'form' => $form->createView()
  122. ));
  123. }
  124. /**
  125. * @Route("/fichefilm/{id}", name="videotheque_voirfilm")
  126. */
  127. public function voirFilmAction(Request $request, \App\Entity\Film $film, CommentaireManager $cm, Security $security, CommentaireRepository $repo)
  128. {
  129. if ($security->isGranted('IS_AUTHENTICATED_REMEMBERED'))
  130. {
  131. $commentaireUser = $repo->findOneBy(array('film'=>$film, 'user'=>$this->getUser()));
  132. if (is_null($commentaireUser))
  133. {
  134. $commentaireUser = new Commentaire();
  135. }
  136. $form = $this->createForm(CommentaireType::class, $commentaireUser);
  137. $form->handleRequest($request);
  138. if ($form->isSubmitted() && $form->isValid())
  139. {
  140. $cm->delEditAdd($commentaireUser, $film);
  141. $this->addFlash('success', 'Le commentaire a été posté');
  142. return $this->redirectToRoute('videotheque_voirfilm', array('id' => $film->getId()));
  143. }
  144. } else {
  145. $form = $this->createForm(CommentaireType::class, null);
  146. }
  147. return $this->render('videotheque/voirfilm.html.twig', array(
  148. 'film' => $film,
  149. 'form' => $form->createView()
  150. ));
  151. }
  152. /**
  153. * @Route("/ajax_req_realisateurs", name="videotheque_ajax_realisateurs")
  154. */
  155. public function ajaxRealisateurs(Request $request, RealisateurRepository $repo)
  156. {
  157. $realisateurs = $repo->findNomsComplets();
  158. $liste = array();
  159. foreach ($realisateurs as $key=>$nom)
  160. {
  161. $liste[$key] = $this->get('serializer')->serialize($nom, 'json');
  162. }
  163. return new JsonResponse($liste);
  164. }
  165. /**
  166. * @Route("/ajax_req_genres", name="videotheque_ajax_genres")
  167. */
  168. public function ajaxGenres(Request $request, GenreRepository $repo)
  169. {
  170. $genres = $repo->findGenres();
  171. $liste = array();
  172. foreach ($genres as $key=>$nom)
  173. {
  174. $liste[$key] = $this->get('serializer')->serialize($nom, 'json');
  175. }
  176. return new JsonResponse($liste);
  177. }
  178. }