123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- <?php
- namespace App\Controller;
- use App\Entity\Film;
- use App\Form\FilmType;
- use App\Repository\FilmRepository;
- use App\Service\FilmManager;
- use App\Service\TmdbApiService;
- use Doctrine\ORM\EntityManagerInterface;
- use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
- use Symfony\Component\Form\FormFactoryInterface;
- use Symfony\Component\HttpFoundation\JsonResponse;
- use Symfony\Component\Routing\Attribute\Route;
- use Symfony\Component\HttpFoundation\Request;
- use Symfony\Component\HttpFoundation\Response;
- use Symfony\Component\Security\Http\Attribute\IsGranted;
- class VideothequeCrudController extends AbstractController
- {
- #[Route("/maliste/modifieravoir", name:"maliste_modifier_a_voir", methods: ['PATCH'])]
- public function modifierFilmDansListeAction(Request $request, EntityManagerInterface $em, FilmRepository $repo, FilmManager $filmManager): Response
- {
- $result = null;
- $film = $repo->find($request->toArray()['id_film']);
- $result = $filmManager->inverseUserWantToView($film);
- $em->flush();
- /*$resultat = $this->get('serializer')->serialize($film, 'json');*/
- return new JsonResponse((object)['newState' => $result]);
- }
- #[Route("/maliste/modifiervus", name:"maliste_modifier_vus", methods: ['PATCH'])]
- public function modifierFilmVusAction(Request $request, FilmRepository $repo, EntityManagerInterface $em, FilmManager $filmManager): Response
- {
- $result = null;
- $film = $repo->find($request->toArray()['id_film']);
- $result = $filmManager->inverseUserWhoSeen($film);
- $em->flush();
- return new JsonResponse((object)['newState' => $result]);
- }
- #[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->render('videotheque/ajouter.html.twig', array(
- 'form' => $form,
- ));
- }
- #[Route("/addtmdb", name: "videotheque_ajouter_tmdb")]
- public function ajouterTmdb(
- Request $request,
- TmdbApiService $tmdbApiService,
- FilmRepository $filmRepository
- ): Response
- {
- $films = [];
- $nbFilms = 0;
- $nbPages = 0;
-
- $page = (int) $request->query->get('page', 1);
- if ($page === 0) {
- $page = 1;
- }
- $recherche = $request->query->get('query', "");
- if ($tmdbApiService->query($recherche, $page)) {
- $nbFilms = $tmdbApiService->countResults();
- $nbPages = $tmdbApiService->countPages();
- $films = $tmdbApiService->getFilms();
- foreach($films as $key => $film) {
- $filmDejaEnBase = $filmRepository->findFilmInImdb($film['data']);
- foreach($filmDejaEnBase as $filmInBdd) {
- $films[$key]['filmBdd'][] = $filmInBdd;
- }
- }
- }
-
- return $this->render('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->render('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->render('videotheque/supprimer.html.twig', array(
- 'film' => $film,
- 'form' => $form
- ));
- }
- }
|