5 次代码提交 e588300efc ... 42b36b0f91

作者 SHA1 备注 提交日期
  Sangfroid 42b36b0f91 Correction phpdoc 3 周之前
  Sangfroid 6db2329120 Correction de typage 3 周之前
  Sangfroid 43ced3cf4c Oubli d'un descriptif de param 3 周之前
  Sangfroid be6f175948 Remise au propre des repositories 3 周之前
  Sangfroid 7723341c95 Suppression de trucs dépréciés pour mysql 2 月之前

+ 10 - 0
.phpactor.json

@@ -0,0 +1,10 @@
+{
+    "$schema": "/phpactor.schema.json",
+    "symfony.enabled": true,
+    "indexer.exclude_patterns": [
+        "/vendor/**/Tests/**/*",
+        "/vendor/**/tests/**/*",
+        "/var/cache/**/*",
+        "/vendor/composer/**/*"
+    ]
+}

+ 0 - 2
migrations/Version20190906170807.php

@@ -20,7 +20,6 @@ final class Version20190906170807 extends AbstractMigration
     public function up(Schema $schema) : void
     {
         // this up() migration is auto-generated, please modify it to your needs
-        $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.');
 
         $this->addSql('CREATE TABLE genre (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(191) NOT NULL, UNIQUE INDEX UNIQ_835033F85E237E06 (name), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB');
         $this->addSql('CREATE TABLE media_video (id INT AUTO_INCREMENT NOT NULL, type VARCHAR(191) NOT NULL, identif VARCHAR(191) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB');
@@ -49,7 +48,6 @@ final class Version20190906170807 extends AbstractMigration
     public function down(Schema $schema) : void
     {
         // this down() migration is auto-generated, please modify it to your needs
-        $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.');
 
         $this->addSql('ALTER TABLE film_genre DROP FOREIGN KEY FK_1A3CCDA84296D31F');
         $this->addSql('ALTER TABLE film DROP FOREIGN KEY FK_8244BE2226A02EFC');

+ 0 - 2
migrations/Version20191029114504.php

@@ -20,7 +20,6 @@ final class Version20191029114504 extends AbstractMigration
     public function up(Schema $schema) : void
     {
         // this up() migration is auto-generated, please modify it to your needs
-        $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.');
 
         $this->addSql('ALTER TABLE commentaire ADD date_submitted DATETIME DEFAULT NULL');
     }
@@ -28,7 +27,6 @@ final class Version20191029114504 extends AbstractMigration
     public function down(Schema $schema) : void
     {
         // this down() migration is auto-generated, please modify it to your needs
-        $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.');
 
         $this->addSql('ALTER TABLE commentaire DROP date_submitted');
     }

+ 5 - 5
src/Controller/SecurityController.php

@@ -38,7 +38,7 @@ class SecurityController extends AbstractController
     }
 
     #[Route("/logout", name: "app_logout")]
-    public function logout()
+    public function logout(): void
     {
         throw new \Exception('Don\'t forget to activate logout in security.yaml');
     }
@@ -89,7 +89,7 @@ class SecurityController extends AbstractController
 
             return $this->redirectToRoute('admin_index');
         }
-        
+
         return $this->render('profil/preferences.html.twig', [
             'user'  => $options->getUser(),
             'form'  => $form
@@ -134,7 +134,7 @@ class SecurityController extends AbstractController
 
             //$adresse = $this->generateUrl('security_activate', array('token'=>$user->getToken()), UrlGeneratorInterface::ABSOLUTE_URL);
             //$mail->sendMailActivation($user, $adresse);
-            
+
             $adresse = $this->generateUrl('admin_edituser', ['id' => $user->getId()], UrlGeneratorInterface::ABSOLUTE_URL);
             $mail->sendMailDemandeActivation($user, $adresse);
 
@@ -189,7 +189,7 @@ class SecurityController extends AbstractController
     {
         $user = $userRepository->findOneBy(['token' => $token]);
         if ($user !== null && $user->isValidToken()) {
-            
+
             $form = $this->createForm(UserEditPasswordType::class, $user);
             $form->handleRequest($request);
             if ($form->isSubmitted() && $form->isValid()) {
@@ -234,4 +234,4 @@ class SecurityController extends AbstractController
         $this->addFlash('warning', "Ce token n'est plus valide");
         return $this->redirectToRoute('videotheque_liste');
     }
-}
+}

+ 6 - 5
src/Dto/FilmDto.php

@@ -4,6 +4,10 @@ namespace App\Dto;
 
 class FilmDto
 {
+    /**
+     * @param array<int, Genre> $genres
+     * @param array<int, Realisateur> $realisateurs
+     */
     public function __construct(
         public readonly string $titre,
         public readonly \DateTimeImmutable $dateSortie,
@@ -11,8 +15,5 @@ class FilmDto
         public readonly array $realisateurs,
         public readonly string $information,
         public readonly string $idTmdb,
-    )
-    {
-        
-    }
-}
+    ) {}
+}

+ 5 - 2
src/Dto/FiltersDTO.php

@@ -14,9 +14,9 @@ class FiltersDTO
         public int $limit = 25,
 
         public ?User $userName = null,
-        
+
         public null|int|string $note = 0,
-        
+
         #[Assert\NotBlank()]
         public string $sortBy = 'dateSubmited',
 
@@ -31,6 +31,9 @@ class FiltersDTO
         $this->note = $this->note === '' ? null : (int)$this->note;
     }
 
+    /**
+     * @return array<string, mixed>
+     */
     public function toArray(): array
     {
         return [

+ 33 - 34
src/Form/CommentaireType.php

@@ -10,61 +10,60 @@ use Symfony\Component\Form\FormBuilderInterface;
 use Symfony\Component\OptionsResolver\OptionsResolver;
 use Symfony\Component\Form\Extension\Core\Type\SubmitType;
 
-
 class CommentaireType extends AbstractType
 {
     /**
      * {@inheritdoc}
      */
-    public function buildForm(FormBuilderInterface $builder, array $options): void
-    {
-	    $builder
-            ->add('note', NumberType::class, [
-                'required'  => false,
-                'label'       => false,
-                'attr'      => [
-                    'min'   => 0,
-                    'max'   => 5,
-                    'class' => "rating",
-                    'data-step' => 1,
-                    'data-show-clear'   => "true",
-                    'data-show-caption' => "false",
-                    'data-size'         => "sm",
-                    'data-theme'          => "krajee-fa"
-                ]
+    public function buildForm(
+        FormBuilderInterface $builder,
+        array $options,
+    ): void {
+        $builder
+            ->add("note", NumberType::class, [
+                "required" => false,
+                "label" => false,
+                "attr" => [
+                    "min" => 0,
+                    "max" => 5,
+                    "class" => "rating",
+                    "data-step" => 1,
+                    "data-show-clear" => "true",
+                    "data-show-caption" => "false",
+                    "data-size" => "sm",
+                    "data-theme" => "krajee-fa",
+                ],
             ])
-            ->add('contenu', TextareaType::class, [
-                'required' => false,
-                'label' => false,
-                'attr'  => [
-                    'rows'  => 10
-                ]
+            ->add("contenu", TextareaType::class, [
+                "required" => false,
+                "label" => false,
+                "attr" => [
+                    "rows" => 10,
+                ],
             ])
-            ->add('save', SubmitType::class, [
-		        'label' => 'Enregistrer le commentaire',
-                'attr' => [
-                    'class'  =>  'btn-primary'
-                ]
+            ->add("save", SubmitType::class, [
+                "label" => "Enregistrer le commentaire",
+                "attr" => [
+                    "class" => "btn-primary",
+                ],
             ]);
     }
-    
+
     /**
      * {@inheritdoc}
      */
     public function configureOptions(OptionsResolver $resolver): void
     {
         $resolver->setDefaults([
-            'data_class' => Commentaire::class,
+            "data_class" => Commentaire::class,
         ]);
     }
 
     /**
      * {@inheritdoc}
      */
-    public function getBlockPrefix() : string
+    public function getBlockPrefix(): string
     {
-        return 'App_commentaire';
+        return "App_commentaire";
     }
-
-
 }

+ 22 - 18
src/Repository/CommentaireRepository.php

@@ -7,6 +7,8 @@ use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
 use Doctrine\Persistence\ManagerRegistry;
 
 /**
+ * @extends ServiceEntityRepository<Commentaire>
+ *
  * @method Commentaire|null find($id, $lockMode = null, $lockVersion = null)
  * @method Commentaire|null findOneBy(array $criteria, array $orderBy = null)
  * @method Commentaire[]    findAll()
@@ -19,38 +21,40 @@ class CommentaireRepository extends ServiceEntityRepository
         parent::__construct($registry, Commentaire::class);
     }
 
-    public function findLast ($limit = 5): array
+    public function findLast(int $limit = 5): array
     {
-        return $qb = $this->createQueryBuilder('c')
-            ->innerJoin('c.film', 'flm')->addSelect('flm')
-            ->innerJoin('c.user', 'usr')->addSelect('usr')
+        return $qb = $this->createQueryBuilder("c")
+            ->innerJoin("c.film", "flm")
+            ->addSelect("flm")
+            ->innerJoin("c.user", "usr")
+            ->addSelect("usr")
             ->setMaxResults($limit)
-            ->orderBy('c.id', 'DESC')
+            ->orderBy("c.id", "DESC")
             ->getQuery()
             ->getResult();
     }
 
     public function countCommentairesParMois(): array
     {
-        return $this->createQueryBuilder('c')
-            ->select("DATE_FORMAT(c.dateSubmitted, '%Y-%m') as month, COUNT(c.id) as entryCount")
-            ->where('c.dateSubmitted IS NOT NULL')
-            ->groupBy('month')
-            ->orderBy('month', 'ASC')
+        return $this->createQueryBuilder("c")
+            ->select(
+                "DATE_FORMAT(c.dateSubmitted, '%Y-%m') as month, COUNT(c.id) as entryCount",
+            )
+            ->where("c.dateSubmitted IS NOT NULL")
+            ->groupBy("month")
+            ->orderBy("month", "ASC")
             ->getQuery()
-            ->getResult()
-        ;
+            ->getResult();
     }
 
     public function findFirstDateAdded(): ?Commentaire
     {
         // Construire une requête pour obtenir la première date d'ajout
-        return $this->createQueryBuilder('c')
-            ->select('c.dateSubmitted')
-            ->orderBy('c.dateSubmitted', 'ASC')  // Trier par date croissante
-            ->setMaxResults(1)  // Limiter à 1 résultat (la première date)
+        return $this->createQueryBuilder("c")
+            ->select("c.dateSubmitted")
+            ->orderBy("c.dateSubmitted", "ASC") // Trier par date croissante
+            ->setMaxResults(1) // Limiter à 1 résultat (la première date)
             ->getQuery()
-            ->getOneOrNullResult();  // Récupérer le premier résultat ou null
+            ->getOneOrNullResult(); // Récupérer le premier résultat ou null
     }
-
 }

+ 158 - 159
src/Repository/FilmRepository.php

@@ -9,6 +9,8 @@ use Doctrine\ORM\QueryBuilder;
 use Doctrine\Persistence\ManagerRegistry;
 
 /**
+ * @extends ServiceEntityRepository<Film>
+ *
  * @method Film|null find($id, $lockMode = null, $lockVersion = null)
  * @method Film|null findOneBy(array $criteria, array $orderBy = null)
  * @method Film[]    findAll()
@@ -22,257 +24,254 @@ class FilmRepository extends ServiceEntityRepository
         parent::__construct($registry, Film::class);
     }
 
-    public function findFilm($id): Film
+    public function findFilm(int $id): Film
     {
-        $qb = $this->createQueryBuilder('f');
+        $qb = $this->createQueryBuilder("f");
         $query = $qb
-            ->select('f.titre', 'f.annee')
-            ->where('f.id = :id')
-            ->setParameter('id', $id)
+            ->select("f.titre", "f.annee")
+            ->where("f.id = :id")
+            ->setParameter("id", $id)
             ->getQuery();
         return $query->getSingleResult();
     }
 
-    public function queryFilmWithGenre(array $genreNames, int $page = 1, array $filters = []) : QueryBuilder
-    {
+    /**
+     * @param array<int, string> $genreNames
+     * @param array<string, string> $filters
+     */
+    public function queryFilmWithGenre(
+        array $genreNames,
+        int $page = 1,
+        array $filters = [],
+    ): QueryBuilder {
         $qb = $this->queryFilter($page, $filters);
-        $qb
-            ->innerJoin('f.genres', 'g')
-            ->addSelect('f');
+        $qb->innerJoin("f.genres", "g")->addSelect("f");
 
-        $qb
-            ->andWhere($qb->expr()->in('g.name', ':genrenames'))
-            ->setParameter('genrenames', $genreNames)
-        ;
+        $qb->andWhere($qb->expr()->in("g.name", ":genrenames"))->setParameter(
+            "genrenames",
+            $genreNames,
+        );
 
         return $qb;
     }
 
+    /**
+     * @param array<int, string> $genreNames
+     */
     public function findFilmWithGenre(array $genreNames): array
     {
-        return $this->queryFilmWithGenre($genreNames)
-            ->getQuery()
-            ->getResult()
-        ;
+        return $this->queryFilmWithGenre($genreNames)->getQuery()->getResult();
     }
 
-    public function queryFilmWithReal(array $realisateursNames, int $page = 1, array $filters = []): QueryBuilder
-    {
+    /**
+     * @param array<int, string> $realisateursNames
+     * @param array<string, string> $filters
+     */
+    public function queryFilmWithReal(
+        array $realisateursNames,
+        int $page = 1,
+        array $filters = [],
+    ): QueryBuilder {
         $qb = $this->queryFilter($page, $filters);
-        $qb
-            ->leftJoin('f.realisateurs', 'rea')
-            ->addSelect('f')
-            ->andWhere($qb->expr()->in('rea.nomComplet', ':realisateurs'))
-            ->setParameter('realisateurs', $realisateursNames)
-        ;
+        $qb->leftJoin("f.realisateurs", "rea")
+            ->addSelect("f")
+            ->andWhere($qb->expr()->in("rea.nomComplet", ":realisateurs"))
+            ->setParameter("realisateurs", $realisateursNames);
         return $qb;
     }
 
+    /**
+     * @param array<int, string> $realisateursNames
+     */
     public function findFilmWithReal(array $realisateursNames): array
     {
         return $this->queryFilmWithReal($realisateursNames)
             ->getQuery()
-            ->getResult()
-        ;
+            ->getResult();
     }
 
-    public function findFilmWithRealLike($query): array
+    public function findFilmWithRealLike(string $query): array
     {
-        $qb = $this->createQueryBuilder('f');
-        $qb
-            ->innerJoin('f.realisateurs', 'r')
-            ->addSelect('f');
-        $qb
-            ->where($qb->expr()->like('r.nomComplet', ':nomComplet'))
-            ->setParameter('nomComplet', '%'.$query.'%');
+        $qb = $this->createQueryBuilder("f");
+        $qb->innerJoin("f.realisateurs", "r")->addSelect("f");
+        $qb->where(
+            $qb->expr()->like("r.nomComplet", ":nomComplet"),
+        )->setParameter("nomComplet", "%" . $query . "%");
 
         return $qb->getQuery()->getResult();
-
     }
 
-    public function findFilmWithGenreLike($genreName): array
+    public function findFilmWithGenreLike(string $genreName): array
     {
-        $qb = $this->createQueryBuilder('f');
-        $qb
-            ->innerJoin('f.genres', 'g')
-            ->addSelect('f');
+        $qb = $this->createQueryBuilder("f");
+        $qb->innerJoin("f.genres", "g")->addSelect("f");
 
-        $qb->where($qb->expr()->like('g.name', ':genreName'))
-            ->setParameter('genreName', '%'.$genreName.'%');
+        $qb->where($qb->expr()->like("g.name", ":genreName"))->setParameter(
+            "genreName",
+            "%" . $genreName . "%",
+        );
 
-        return $qb
-            ->getQuery()
-            ->getResult();
+        return $qb->getQuery()->getResult();
     }
 
-    public function queryFilter(int $page = 1, array $filters = []): QueryBuilder
-    {
-        $qb =  $this->createQueryBuilder('f')
-            ->orderBy('f.'.($filters['sortBy'] ?? 'dateSubmited'), $filters['sortOrder'] ?? 'DESC')
-        ;
-
-        if (!empty($filters['userWantToView'])) {
-            $qb
-                ->leftJoin('f.usersWantToView', 'wan')
-                ->andWhere($qb->expr()->in('wan', ':user'))
-                ->setParameter('user', $filters['userWantToView'])
-            ;
+    /**
+     * @param array<string, string> $filters
+     */
+    public function queryFilter(
+        int $page = 1,
+        array $filters = [],
+    ): QueryBuilder {
+        $qb = $this->createQueryBuilder("f")->orderBy(
+            "f." . ($filters["sortBy"] ?? "dateSubmited"),
+            $filters["sortOrder"] ?? "DESC",
+        );
+
+        if (!empty($filters["userWantToView"])) {
+            $qb->leftJoin("f.usersWantToView", "wan")
+                ->andWhere($qb->expr()->in("wan", ":user"))
+                ->setParameter("user", $filters["userWantToView"]);
         }
 
-        if (!empty($filters['limit'])) {
-            $limit = (int)$filters['limit'];
-            $qb->setFirstResult(($page * $limit) - $limit);
+        if (!empty($filters["limit"])) {
+            $limit = (int) $filters["limit"];
+            $qb->setFirstResult($page * $limit - $limit);
             $qb->setMaxResults($limit);
         }
-    
-        if (!empty($filters['note'])) {
-            $qb
-                ->andWhere('f.note >= :note')
-                ->setParameter('note', $filters['note'])
-            ;
-        }    
-        
-        if (!empty($filters['username'])) {
-            $qb
-                ->andWhere('f.authered = :authered')
-                ->setParameter('authered', $filters['username'])
-            ;
+
+        if (!empty($filters["note"])) {
+            $qb->andWhere("f.note >= :note")->setParameter(
+                "note",
+                $filters["note"],
+            );
+        }
+
+        if (!empty($filters["username"])) {
+            $qb->andWhere("f.authered = :authered")->setParameter(
+                "authered",
+                $filters["username"],
+            );
         }
         return $qb;
-        
     }
 
-    public function queryTous ($page = 1, array $filters = []): QueryBuilder
+    /**
+     * @param array<string, string> $filters
+     */
+    public function queryTous(int $page = 1, array $filters = []): QueryBuilder
     {
         $qb = $this->queryFilter($page, $filters)
-            ->leftJoin('f.authered', 'aut')->addSelect('aut')
-            ->leftJoin('f.genres', 'gen')->addSelect('gen')
-            ->leftJoin('f.realisateurs', 'rea')->addSelect('rea')
-        ;
+            ->leftJoin("f.authered", "aut")
+            ->addSelect("aut")
+            ->leftJoin("f.genres", "gen")
+            ->addSelect("gen")
+            ->leftJoin("f.realisateurs", "rea")
+            ->addSelect("rea");
         return $qb;
     }
 
     public function findProchaines(): array
     {
-        $date = new \DateTime('now');
+        $date = new \DateTime("now");
         $interval = new \DateInterval("P20D");
         $interval->invert = 1;
         $date->add($interval);
-        $qb = $this->createQueryBuilder('f');
-        $qb
-            ->leftJoin('f.authered', 'aut')->addSelect('aut')
-            ->leftJoin('f.genres', 'gen')->addSelect('gen')
-            ->leftJoin('f.realisateurs', 'rea')->addSelect('rea')
-            ->where('f.dateSortie > :date')
-            ->setParameter('date', $date)
-            ->orderBy('f.dateSortie', 'ASC');
-        return $qb
-            ->getQuery()
-            ->getResult();
+        $qb = $this->createQueryBuilder("f");
+        $qb->leftJoin("f.authered", "aut")
+            ->addSelect("aut")
+            ->leftJoin("f.genres", "gen")
+            ->addSelect("gen")
+            ->leftJoin("f.realisateurs", "rea")
+            ->addSelect("rea")
+            ->where("f.dateSortie > :date")
+            ->setParameter("date", $date)
+            ->orderBy("f.dateSortie", "ASC");
+        return $qb->getQuery()->getResult();
     }
 
     public function findFilmWithExistentTitre(string $titre): array
     {
-        return $this->createQueryBuilder('f')
-            ->leftJoin('f.realisateurs', 'r')->addSelect('r')
-            ->where('f.titre = :titre')
-            ->setParameter('titre', $titre)
+        return $this->createQueryBuilder("f")
+            ->leftJoin("f.realisateurs", "r")
+            ->addSelect("r")
+            ->where("f.titre = :titre")
+            ->setParameter("titre", $titre)
             ->getQuery()
-            ->getResult()
-        ;
+            ->getResult();
     }
 
     public function findFilmInImdb(Film $film): array
     {
         $reals = [];
-        foreach($film->getRealisateurs() as $real) {
+        foreach ($film->getRealisateurs() as $real) {
             $reals[] = $real->getNomComplet();
         }
-        $qb = $this->createQueryBuilder('f');
-        $qb
-            ->andWhere('f.titre = :titre')
-            ->setParameter('titre', $film->getTitre())
-            ->innerJoin('f.realisateurs', 'rea')
-            ->andWhere($qb->expr()->in('rea.nomComplet', ':reals'))
-            ->setParameter('reals', $reals)
-        ;
-        return $qb
-            ->getQuery()
-            ->getResult()
-        ;
+        $qb = $this->createQueryBuilder("f");
+        $qb->andWhere("f.titre = :titre")
+            ->setParameter("titre", $film->getTitre())
+            ->innerJoin("f.realisateurs", "rea")
+            ->andWhere($qb->expr()->in("rea.nomComplet", ":reals"))
+            ->setParameter("reals", $reals);
+        return $qb->getQuery()->getResult();
     }
 
     public function findRandom(int $nb = 5): array
     {
-        $films = $this->createQueryBuilder('f')
-            ->select('f.id')
+        $films = $this->createQueryBuilder("f")
+            ->select("f.id")
             ->getQuery()
-            ->getResult()
-        ;
-        $ids = array_flip(array_map(fn($value): int => $value['id'], $films));
+            ->getResult();
+        $ids = array_flip(array_map(fn($value): int => $value["id"], $films));
 
         $random = array_rand($ids, $nb);
 
-        $qb = $this->createQueryBuilder('f');
-        $qb->andWhere($qb->expr()->in('f.id', $random));
-        
-        return $qb
-            ->getQuery()
-            ->getResult()
-        ;
+        $qb = $this->createQueryBuilder("f");
+        $qb->andWhere($qb->expr()->in("f.id", $random));
+
+        return $qb->getQuery()->getResult();
     }
 
     public function countAjoutsParMois(): array
     {
-        return $this->createQueryBuilder('f')
-            ->select("DATE_FORMAT(f.dateSubmited, '%Y-%m') as month, COUNT(f.id) as entryCount")
-            ->groupBy('month')
-            ->orderBy('month', 'ASC')
+        return $this->createQueryBuilder("f")
+            ->select(
+                "DATE_FORMAT(f.dateSubmited, '%Y-%m') as month, COUNT(f.id) as entryCount",
+            )
+            ->groupBy("month")
+            ->orderBy("month", "ASC")
             ->getQuery()
-            ->getResult()
-        ;
+            ->getResult();
     }
 
     public function countFilmsVusBy(User $user): int
     {
-        $qb = $this->createQueryBuilder('f');
-        $qb
-            ->select('COUNT(f.id)')
-            ->leftJoin('f.usersWhoSeen', 'wan')
-            ->andWhere($qb->expr()->in('wan', ':user'))
-            ->setParameter('user', $user)
-        ;
-
-        return $qb
-            ->getQuery()
-            ->getSingleScalarResult()
-        ;
+        $qb = $this->createQueryBuilder("f");
+        $qb->select("COUNT(f.id)")
+            ->leftJoin("f.usersWhoSeen", "wan")
+            ->andWhere($qb->expr()->in("wan", ":user"))
+            ->setParameter("user", $user);
+
+        return $qb->getQuery()->getSingleScalarResult();
     }
 
     public function countFilmsFavorisBy(User $user): int
     {
-        $qb = $this->createQueryBuilder('f');
-        $qb
-            ->select('COUNT(f.id)')
-            ->leftJoin('f.usersWantToView', 'wan')
-            ->andWhere($qb->expr()->in('wan', ':user'))
-            ->setParameter('user', $user)
-        ;
-
-        return $qb
-            ->getQuery()
-            ->getSingleScalarResult()
-        ;
+        $qb = $this->createQueryBuilder("f");
+        $qb->select("COUNT(f.id)")
+            ->leftJoin("f.usersWantToView", "wan")
+            ->andWhere($qb->expr()->in("wan", ":user"))
+            ->setParameter("user", $user);
+
+        return $qb->getQuery()->getSingleScalarResult();
     }
 
     public function findFirstDateAdded(): ?Film
     {
         // Construire une requête pour obtenir la première date d'ajout
-        return $this->createQueryBuilder('f')
-            ->select('f.dateSubmited')
-            ->orderBy('f.dateSubmited', 'ASC')  // Trier par date croissante
-            ->setMaxResults(1)  // Limiter à 1 résultat (la première date)
+        return $this->createQueryBuilder("f")
+            ->select("f.dateSubmited")
+            ->orderBy("f.dateSubmited", "ASC") // Trier par date croissante
+            ->setMaxResults(1) // Limiter à 1 résultat (la première date)
             ->getQuery()
-            ->getOneOrNullResult();  // Récupérer le premier résultat ou null
+            ->getOneOrNullResult(); // Récupérer le premier résultat ou null
     }
 }

+ 14 - 17
src/Repository/GenreRepository.php

@@ -7,42 +7,39 @@ use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
 use Doctrine\Persistence\ManagerRegistry;
 
 /**
+ * @extends ServiceEntityRepository<Genre>
+ *
  * @method Genre|null find($id, $lockMode = null, $lockVersion = null)
  * @method Genre|null findOneBy(array $criteria, array $orderBy = null)
  * @method Genre[]    findAll()
  * @method Genre[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  */
 
-/**
- * GenreRepository
- *
- * This class was generated by the Doctrine ORM. Add your own custom
- * repository methods below.
- */
 class GenreRepository extends ServiceEntityRepository
 {
     public function __construct(ManagerRegistry $registry)
     {
-        parent::__construct($registry, Genre::class);   
+        parent::__construct($registry, Genre::class);
     }
 
-    public function findGenres (): array
+    /**
+     * @@return array<int, string>
+     */
+    public function findGenres(): array
     {
-        $qb = $this->createQueryBuilder('g');
-        $query = $qb
-            ->select('g.name')
-            ->getQuery();
+        $qb = $this->createQueryBuilder("g");
+        $query = $qb->select("g.name")->getQuery();
 
         return $query->getArrayResult();
     }
 
     public function findGenreLike(?string $query = null): ?array
     {
-        $qb = $this->createQueryBuilder('g');
-        $qb
-            ->where($qb->expr()->like('g.name', ':genreName'))
-            ->setParameter('genreName', '%'.$query.'%')
-        ;
+        $qb = $this->createQueryBuilder("g");
+        $qb->where($qb->expr()->like("g.name", ":genreName"))->setParameter(
+            "genreName",
+            "%" . $query . "%",
+        );
         return $qb->getQuery()->getResult();
     }
 }

+ 18 - 1
src/Repository/MediaVideoRepository.php

@@ -2,12 +2,29 @@
 
 namespace App\Repository;
 
+use App\Entity\MediaVideo;
+use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
+use Doctrine\Persistence\ManagerRegistry;
+
+/**
+ * @extends ServiceEntityRepository<MediaVideo>
+ *
+ * @method MediaVideo|null find($id, $lockMode = null, $lockVersion = null)
+ * @method MediaVideo|null findOneBy(array $criteria, array $orderBy = null)
+ * @method MediaVideo[]    findAll()
+ * @method MediaVideo[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
+ */
+
 /**
  * MediaVideoRepository
  *
  * This class was generated by the Doctrine ORM. Add your own custom
  * repository methods below.
  */
-class MediaVideoRepository extends \Doctrine\ORM\EntityRepository
+class MediaVideoRepository extends ServiceEntityRepository
 {
+    public function __construct(ManagerRegistry $registry)
+    {
+        parent::__construct($registry, MediaVideo::class);
+    }
 }

+ 5 - 5
src/Repository/ProfileRepository.php

@@ -8,6 +8,7 @@ use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
 use Doctrine\Persistence\ManagerRegistry;
 
 /**
+ * @extends ServiceEntityRepository<Proile>
  * @method Profile|null find($id, $lockMode = null, $lockVersion = null)
  * @method Profile|null findOneBy(array $criteria, array $orderBy = null)
  * @method Profile[]    findAll()
@@ -22,12 +23,11 @@ class ProfileRepository extends ServiceEntityRepository
 
     public function findByUser(User $user): ?Profile
     {
-        return $this->createQueryBuilder('p')
-            ->andWhere('p.user = :user')
-            ->setParameter('user', $user->getId())
+        return $this->createQueryBuilder("p")
+            ->andWhere("p.user = :user")
+            ->setParameter("user", $user->getId())
             ->getQuery()
-            ->getOneOrNullResult()
-        ;
+            ->getOneOrNullResult();
     }
 
     // /**

+ 31 - 30
src/Repository/RealisateurRepository.php

@@ -7,6 +7,7 @@ use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
 use Doctrine\Persistence\ManagerRegistry;
 
 /**
+ * @extends ServiceEntityRepository<Realisateur>
  * @method Realisateur|null find($id, $lockMode = null, $lockVersion = null)
  * @method Realisateur|null findOneBy(array $criteria, array $orderBy = null)
  * @method Realisateur[]    findAll()
@@ -17,37 +18,36 @@ class RealisateurRepository extends ServiceEntityRepository
 {
     public function __construct(ManagerRegistry $registry)
     {
-        parent::__construct($registry, Realisateur::class);  
+        parent::__construct($registry, Realisateur::class);
     }
 
     public function findByNom(string $nom): array
     {
-        $qb = $this->createQueryBuilder ('r');
+        $qb = $this->createQueryBuilder("r");
         $expr = $qb->expr();
         $query = $qb
-            ->select('r.id', 'r.nom', 'r.prenom')
-            ->where(
-                $expr->like('r.nom', ':nom'))
-            ->setParameter('nom', $nom.'%')
+            ->select("r.id", "r.nom", "r.prenom")
+            ->where($expr->like("r.nom", ":nom"))
+            ->setParameter("nom", $nom . "%")
             ->getQuery();
-            
+
         return $query->getResult();
     }
 
     public function findByNomComplet(string $nomComplet): array
     {
-        $qb = $this->createQueryBuilder ('r');
+        $qb = $this->createQueryBuilder("r");
         $expr = $qb->expr();
-        $tableau = explode(' ', $nomComplet);
+        $tableau = explode(" ", $nomComplet);
 
         if (count($tableau) == 1) {
             $premier = $tableau[0];
             $orPremier = $expr->orX(
-                $expr->like('r.nom', ':premier'),
-                $expr->like('r.prenom', ':premier')
+                $expr->like("r.nom", ":premier"),
+                $expr->like("r.prenom", ":premier"),
             );
             $andExpression = $expr->andX($orPremier);
-            $qb->setParameter('premier', $premier.'%');
+            $qb->setParameter("premier", $premier . "%");
         }
 
         if (count($tableau) > 1) {
@@ -55,47 +55,48 @@ class RealisateurRepository extends ServiceEntityRepository
             $deuxieme = $tableau[1];
 
             $orPremier = $expr->orX(
-                $expr->eq('r.nom', ':premier'),
-                $expr->eq('r.prenom', ':premier')
+                $expr->eq("r.nom", ":premier"),
+                $expr->eq("r.prenom", ":premier"),
             );
 
             $orDeuxieme = $expr->orX(
-                $expr->like('r.nom', ':deuxieme'),
-                $expr->like('r.prenom', ':deuxieme')
+                $expr->like("r.nom", ":deuxieme"),
+                $expr->like("r.prenom", ":deuxieme"),
             );
 
             $andExpression = $expr->andX($orPremier, $orDeuxieme);
 
-            $qb
-                ->setParameter('premier', $premier)
-                ->setParameter('deuxieme', $deuxieme.'%');
+            $qb->setParameter("premier", $premier)->setParameter(
+                "deuxieme",
+                $deuxieme . "%",
+            );
         }
 
         $query = $qb
-            ->select('r.id', 'r.nom', 'r.prenom')
+            ->select("r.id", "r.nom", "r.prenom")
             ->where($andExpression)
             ->getQuery();
 
         return $query->getResult();
     }
 
-    public function findNomsComplets (): array
+    /**
+     * @return array<int, string>
+     */
+    public function findNomsComplets(): array
     {
-        $qb = $this->createQueryBuilder('r');
-        $query = $qb
-            ->select('r.nomComplet')
-            ->getQuery();
+        $qb = $this->createQueryBuilder("r");
+        $query = $qb->select("r.nomComplet")->getQuery();
 
         return $query->getArrayResult();
     }
 
     public function findRealisateurLike(?string $query = null): ?array
     {
-        $qb = $this->createQueryBuilder('r');
-        $qb
-            ->where($qb->expr()->like('r.nomComplet', ':realName'))
-            ->setParameter('realName', '%'.$query.'%')
-        ;
+        $qb = $this->createQueryBuilder("r");
+        $qb->where(
+            $qb->expr()->like("r.nomComplet", ":realName"),
+        )->setParameter("realName", "%" . $query . "%");
         return $qb->getQuery()->getResult();
     }
 }

+ 7 - 9
src/Repository/UserRepository.php

@@ -7,6 +7,7 @@ use Doctrine\Persistence\ManagerRegistry;
 use App\Entity\User;
 
 /**
+ * @extends ServiceEntityRepository<User>
  * @method User|null find($id, $lockMode = null, $lockVersion = null)
  * @method User|null findOneBy(array $criteria, array $orderBy = null)
  * @method User[]    findAll()
@@ -22,15 +23,12 @@ class UserRepository extends ServiceEntityRepository
 
     public function findUser(int $userId): User
     {
-        $qb = $this
-            ->createQueryBuilder('u')
-            ->leftJoin('u.films', 'f')
-            ->addSelect('f')
-            ->where('u.id = :user')
-            ->setParameter('user' , $userId);
+        $qb = $this->createQueryBuilder("u")
+            ->leftJoin("u.films", "f")
+            ->addSelect("f")
+            ->where("u.id = :user")
+            ->setParameter("user", $userId);
 
-        return $qb
-            ->getQuery()
-            ->getSingleResult();
+        return $qb->getQuery()->getSingleResult();
     }
 }

+ 10 - 11
src/Service/FilmManager.php

@@ -2,7 +2,6 @@
 
 namespace App\Service;
 
-use App\Entity\Commentaire;
 use App\Entity\Film;
 use App\Entity\User;
 use Doctrine\ORM\EntityManagerInterface;
@@ -11,7 +10,8 @@ use Symfony\Bundle\SecurityBundle\Security;
 /**
  * Class FilmManager
  */
-class FilmManager {
+class FilmManager
+{
     protected $user;
 
     public function __construct(
@@ -19,13 +19,12 @@ class FilmManager {
         protected UniciteCollections $uc,
         protected CommentaireManager $cm,
         protected MediaVideoManager $mvm,
-        Security $security
-    )
-    {
+        Security $security,
+    ) {
         $this->user = $security->getUser();
     }
 
-    public function addFilm (Film $film): void
+    public function addFilm(Film $film): void
     {
         $film->setAuthered($this->user);
         $film = $this->uc->assureUniciteCollections($film);
@@ -42,12 +41,12 @@ class FilmManager {
     public function delFilm(Film $film): void
     {
         $commentaires = $film->getCommentaires();
-        foreach($commentaires as $commentaire) {
+        foreach ($commentaires as $commentaire) {
             $this->cm->delCommentaire($commentaire);
         }
 
         $mediaVideos = $film->getMediaVideos();
-        foreach($mediaVideos as $media) {
+        foreach ($mediaVideos as $media) {
             $this->mvm->delMediaVideo($media);
         }
         $this->em->remove($film);
@@ -55,7 +54,7 @@ class FilmManager {
         $this->em->flush();
     }
 
-    public function inverseUserWhoSeen (Film $film): bool
+    public function inverseUserWhoSeen(Film $film): bool
     {
         if ($film->getUsersWhoSeen()->contains($this->user)) {
             $film->removeUserWhoSeen($this->user);
@@ -65,7 +64,7 @@ class FilmManager {
         return $this->isSeen($film);
     }
 
-    public function inverseUserWantToView (Film $film): bool
+    public function inverseUserWantToView(Film $film): bool
     {
         if ($film->getUsersWantToView()->contains($this->user)) {
             $film->removeUserWantToView($this->user);
@@ -86,4 +85,4 @@ class FilmManager {
         $user = $user ?: $this->user;
         return $film->getUsersWantToView()->contains($user);
     }
-}
+}

+ 11 - 10
src/Service/GenreManager.php

@@ -3,17 +3,19 @@
 namespace App\Service;
 
 use App\Entity\Genre;
-use App\Entity\Film;
+use App\Repository\FilmRepository;
+use App\Repository\GenreRepository;
 use Doctrine\ORM\EntityManagerInterface;
 
 /**
  * Class GenreManager
  */
-class GenreManager {
-
-    public function __construct(protected EntityManagerInterface $em)
-    {
-    }
+class GenreManager
+{
+    public function __construct(
+        protected EntityManagerInterface $em,
+        protected FilmRepository $genreRepository,
+    ) {}
 
     public function add(Genre $genre): void
     {
@@ -28,12 +30,11 @@ class GenreManager {
 
     public function del(Genre $genre): void
     {
-        $films = $this->em->getRepository(Film::class)->findFilmWithGenre(array($genre->getName()));
-        foreach ($films as $film)
-        {
+        $films = $this->genreRepository->findFilmWithGenre([$genre->getName()]);
+        foreach ($films as $film) {
             $film->removeGenre($genre);
         }
         $this->em->remove($genre);
         $this->em->flush();
     }
-}
+}

+ 96 - 60
src/Service/Mattermost.php

@@ -2,7 +2,6 @@
 
 namespace App\Service;
 
-
 use App\Entity\Film;
 use App\Entity\User;
 use Symfony\Bundle\SecurityBundle\Security;
@@ -25,93 +24,130 @@ class Mattermost
         protected string $channelIdAdmin,
         protected UrlGeneratorInterface $router,
         protected RequestStack $requestStack,
-        protected Security $security
-    )
-    {
-    }
+        protected Security $security,
+    ) {}
 
-    protected function SendNotif(string $message, bool $isChanAdmin = False) :void
-    {
+    protected function sendNotif(
+        string $message,
+        bool $isChanAdmin = false,
+    ): void {
         try {
             $response = $this->mattermostClient->request(
-                'POST',
-                'api/v4/posts', [
-                    'json'  => [
-                        "channel_id" => ($isChanAdmin ? $this->channelIdAdmin : $this->channelId),
-                        "message"    => $message
-                    ]
-                ]
+                "POST",
+                "api/v4/posts",
+                [
+                    "json" => [
+                        "channel_id" => $isChanAdmin
+                            ? $this->channelIdAdmin
+                            : $this->channelId,
+                        "message" => $message,
+                    ],
+                ],
             );
             // Appeler au moins une méthode pour déclencher l'exception en cas d'erreur réseau
             $response->getHeaders();
-
         } catch (TransportExceptionInterface $e) {
             /** @var \Symfony\Component\HttpFoundation\Session\Session $session */
             $session = $this->requestStack->getSession();
-            $session->getFlashBag()->add('error', "L'envoi vers mattermost a échoué.");
+            $session
+                ->getFlashBag()
+                ->add("error", "L'envoi vers mattermost a échoué.");
         }
     }
 
-    public function sendNouveauFilm(Film $film) :void
+    public function sendNouveauFilm(Film $film): void
     {
         $message =
-            ":new: **"
-            .$film->getAuthered()->getUserIdentifier()
-            ."** vient d'ajouter **"
-            ."[".$film->getTitre()."]("
-            .$this->router->generate('videotheque_voirfilm', ['id' => $film->getId()], UrlGeneratorInterface::ABSOLUTE_URL)
-            .")** dans la [vidéothèque]("
-            .$this->router->generate('videotheque_liste', [], UrlGeneratorInterface::ABSOLUTE_URL)
-            .").";
-        $this->SendNotif($message);
+            ":new: **" .
+            $film->getAuthered()->getUserIdentifier() .
+            "** vient d'ajouter **" .
+            "[" .
+            $film->getTitre() .
+            "](" .
+            $this->router->generate(
+                "videotheque_voirfilm",
+                ["id" => $film->getId()],
+                UrlGeneratorInterface::ABSOLUTE_URL,
+            ) .
+            ")** dans la [vidéothèque](" .
+            $this->router->generate(
+                "videotheque_liste",
+                [],
+                UrlGeneratorInterface::ABSOLUTE_URL,
+            ) .
+            ").";
+        $this->sendNotif($message);
     }
 
-    public function sendNouveauCommentaire(User $user, Film $film) :void
+    public function sendNouveauCommentaire(User $user, Film $film): void
     {
         $message =
-            ":new: **"
-            .$user->getUserIdentifier()
-            ."** vient d'ajouter un commentaire sur le film **"
-            ."[".$film->getTitre()."]("
-            .$this->router->generate('videotheque_voirfilm', ['id' => $film->getId()], UrlGeneratorInterface::ABSOLUTE_URL)
-            .")** dans la [vidéothèque]("
-            .$this->router->generate('videotheque_liste', [], UrlGeneratorInterface::ABSOLUTE_URL)
-            .")."
-        ;
+            ":new: **" .
+            $user->getUserIdentifier() .
+            "** vient d'ajouter un commentaire sur le film **" .
+            "[" .
+            $film->getTitre() .
+            "](" .
+            $this->router->generate(
+                "videotheque_voirfilm",
+                ["id" => $film->getId()],
+                UrlGeneratorInterface::ABSOLUTE_URL,
+            ) .
+            ")** dans la [vidéothèque](" .
+            $this->router->generate(
+                "videotheque_liste",
+                [],
+                UrlGeneratorInterface::ABSOLUTE_URL,
+            ) .
+            ").";
 
-        $this->SendNotif($message);
+        $this->sendNotif($message);
     }
 
-    public function sendNewUser(string $userName) : void
+    public function sendNewUser(string $userName): void
     {
         $message =
-            ":warning: Un utilisateur vient de s'enregistrer dans la [vidéothèque]("
-            .$this->router->generate('videotheque_liste', [], UrlGeneratorInterface::ABSOLUTE_URL)
-            .")** : "
-            .$userName
-            ."**. Accéder à la [liste des utilisateurs]("
-            .$this->router->generate('admin_index', [],  UrlGeneratorInterface::ABSOLUTE_URL)
-            .")."
-        ;
+            ":warning: Un utilisateur vient de s'enregistrer dans la [vidéothèque](" .
+            $this->router->generate(
+                "videotheque_liste",
+                [],
+                UrlGeneratorInterface::ABSOLUTE_URL,
+            ) .
+            ")** : " .
+            $userName .
+            "**. Accéder à la [liste des utilisateurs](" .
+            $this->router->generate(
+                "admin_index",
+                [],
+                UrlGeneratorInterface::ABSOLUTE_URL,
+            ) .
+            ").";
 
-        $this->sendNotif($message, True);
+        $this->sendNotif($message, true);
     }
 
     public function sendNewMediaVideo(Film $film): void
     {
         $message =
-            ":new: **"
-            . $this->security->getToken()->getUserIdentifier()
-            ."** vient d'ajouter une bande d'annonce sur le film **"
-            ."[".$film->getTitre()."]("
-            .$this->router->generate('videotheque_voirfilm', ['id' => $film->getId()], UrlGeneratorInterface::ABSOLUTE_URL)
-            .")** dans la [vidéothèque]("
-            .$this->router->generate('videotheque_liste', [], UrlGeneratorInterface::ABSOLUTE_URL)
-            .")."
-        ;
+            ":new: **" .
+            $this->security->getToken()->getUserIdentifier() .
+            "** vient d'ajouter une bande d'annonce sur le film **" .
+            "[" .
+            $film->getTitre() .
+            "](" .
+            $this->router->generate(
+                "videotheque_voirfilm",
+                ["id" => $film->getId()],
+                UrlGeneratorInterface::ABSOLUTE_URL,
+            ) .
+            ")** dans la [vidéothèque](" .
+            $this->router->generate(
+                "videotheque_liste",
+                [],
+                UrlGeneratorInterface::ABSOLUTE_URL,
+            ) .
+            ").";
 
-        $this->SendNotif($message);
+        $this->sendNotif($message);
     }
-
-
-}
+}

+ 8 - 10
src/Service/NoteListener.php

@@ -10,33 +10,32 @@ use Doctrine\ORM\Event\PostUpdateEventArgs;
 use Doctrine\ORM\Events;
 use Doctrine\Persistence\Event\LifecycleEventArgs;
 
-
 #[AsDoctrineListener(event: Events::postPersist)]
 #[AsDoctrineListener(event: Events::postUpdate)]
 #[AsDoctrineListener(event: Events::postRemove)]
 class NoteListener
-
 {
-    public function __construct(protected NoteMoyenne $noteMoyenne)
-    {
-    }
+    public function __construct(protected NoteMoyenne $noteMoyenne) {}
 
     public function postPersist(PostPersistEventArgs $args): void
     {
         $this->calculer($args);
     }
 
-    public function postUpdate (PostUpdateEventArgs $args): void
+    public function postUpdate(PostUpdateEventArgs $args): void
     {
         $this->calculer($args);
     }
 
-    public function postRemove (PostRemoveEventArgs $args): void
+    public function postRemove(PostRemoveEventArgs $args): void
     {
         $this->calculer($args);
     }
 
-    private function calculer (LifecycleEventArgs $args): void
+    /**
+     * @param LifecycleEventArgs $args
+     */
+    private function calculer(LifecycleEventArgs $args): void
     {
         $entity = $args->getObject();
 
@@ -46,5 +45,4 @@ class NoteListener
 
         $this->noteMoyenne->calculerMoyenne($entity->getFilm());
     }
-
-}
+}

+ 2 - 8
src/Service/RegisterListener.php

@@ -6,15 +6,11 @@ use App\Entity\User;
 use Doctrine\Bundle\DoctrineBundle\Attribute\AsDoctrineListener;
 use Doctrine\ORM\Event\PostPersistEventArgs;
 use Doctrine\ORM\Events;
-use Doctrine\Persistence\Event\LifecycleEventArgs;
-
 
 #[AsDoctrineListener(event: Events::postPersist)]
 class RegisterListener
 {
-    public function __construct(protected Mattermost $mattermostSender)
-    {
-    }
+    public function __construct(protected Mattermost $mattermostSender) {}
 
     public function postPersist(PostPersistEventArgs $args): void
     {
@@ -24,7 +20,5 @@ class RegisterListener
         }
 
         $this->mattermostSender->sendNewUser($entity->getUserIdentifier());
-
-
     }
-}
+}

+ 45 - 54
src/Service/TmdbApiService.php

@@ -7,34 +7,29 @@ use App\Entity\Genre;
 use App\Entity\MediaVideo;
 use App\Entity\Realisateur;
 use Symfony\Contracts\HttpClient\HttpClientInterface;
+use stdClass;
 
 class TmdbApiService
 {
-    protected string $content = '';
+    protected string $content = "";
     protected int $nbResults = 0;
     protected int $nbPages = 0;
     protected array $films = [];
 
     public function __construct(
         protected HttpClientInterface $tmdbClient,
-        protected UniciteCollections $uc
-    )
-    {
-        
-    }
+        protected UniciteCollections $uc,
+    ) {}
 
     public function query(string $titre, int $page = 1): bool
     {
         try {
-            $response = $this->tmdbClient->request(
-                'GET',
-                'search/movie',[
-                    'query' => [                
-                        'query' => $titre,
-                        'page'  => $page
-                    ]
-                ]
-            );
+            $response = $this->tmdbClient->request("GET", "search/movie", [
+                "query" => [
+                    "query" => $titre,
+                    "page" => $page,
+                ],
+            ]);
 
             $this->content = $response->getContent();
             $this->jsonDecode();
@@ -48,16 +43,12 @@ class TmdbApiService
     {
         $detail = null;
         try {
-            $response = $this->tmdbClient->request(
-                'GET',
-                'movie/'. $id ,[
-                    'query' => [
-                        'append_to_response'    => 'credits,videos',
-                    ]
-                ]
-            );
+            $response = $this->tmdbClient->request("GET", "movie/" . $id, [
+                "query" => [
+                    "append_to_response" => "credits,videos",
+                ],
+            ]);
             $detail = $response->getContent();
-
         } catch (\Exception $e) {
             return null;
         }
@@ -87,40 +78,32 @@ class TmdbApiService
         $this->nbPages = $json->total_pages;
         $entrees = $json->results;
 
-        foreach($entrees as $entree) {
+        foreach ($entrees as $entree) {
             $film = $this->hydrateFilm($entree->id);
 
-            $this->films[$entree->id]['data'] = $film;
+            $this->films[$entree->id]["data"] = $film;
         }
     }
 
-    public function hydrateFilm($filmTmdbId): Film
+    public function hydrateFilm(int $filmTmdbId): Film
     {
         $filmTmdb = json_decode($this->getDetailMovie($filmTmdbId));
         $film = new Film();
-        $film
-            ->setTitre($filmTmdb->title)
-            ->setInformation($filmTmdb->overview);
+        $film->setTitre($filmTmdb->title)->setInformation($filmTmdb->overview);
 
-        if (preg_match ("/^\d{4}-\d{2}-\d{2}$/", $filmTmdb->release_date))
-        {
+        if (preg_match("/^\d{4}-\d{2}-\d{2}$/", $filmTmdb->release_date)) {
             $dateSortie = $filmTmdb->release_date;
-            $annee = substr($dateSortie, 0, 4) . '-01-01';
+            $annee = substr($dateSortie, 0, 4) . "-01-01";
             $film
                 ->setDateSortie(new \DateTimeImmutable($dateSortie))
-                ->setAnnee(new \DateTimeImmutable($annee))
-            ;
-
-        } elseif (preg_match("/^\d{4}/", $filmTmdb->release_date)) {
-            $annee = substr($filmTmdb->release_date, 0, 4) . '-01-01';
-            $film                    
                 ->setAnnee(new \DateTimeImmutable($annee));
-            ;
+        } elseif (preg_match("/^\d{4}/", $filmTmdb->release_date)) {
+            $annee = substr($filmTmdb->release_date, 0, 4) . "-01-01";
+            $film->setAnnee(new \DateTimeImmutable($annee));
         }
 
-        ;
         foreach ($filmTmdb->genres as $genre) {
-            $film->addGenre((new Genre())->setName($genre->name));
+            $film->addGenre(new Genre()->setName($genre->name));
         }
 
         foreach ($this->getRealisateurs($filmTmdb) as $realisateur) {
@@ -130,7 +113,7 @@ class TmdbApiService
         $videoTmdb = $this->getOneVideo($filmTmdb);
         if (!empty($videoTmdb)) {
             $video = new MediaVideo();
-            $video->setFromTmdb($videoTmdb['type'], $videoTmdb['identif']);
+            $video->setFromTmdb($videoTmdb["type"], $videoTmdb["identif"]);
             $film->addMediaVideo($video);
         }
 
@@ -138,11 +121,14 @@ class TmdbApiService
         return $film;
     }
 
-    public function getRealisateurs($detailMovie): array
+    /**
+     * @return array<int, Realisateur>
+     */
+    public function getRealisateurs(stdClass $detailMovie): array
     {
-        $directors = array();
-        foreach($detailMovie->credits->crew as $crew) {
-            if ($crew->job === 'Director') {
+        $directors = [];
+        foreach ($detailMovie->credits->crew as $crew) {
+            if ($crew->job === "Director") {
                 $realisateur = new Realisateur();
                 $realisateur->setNomComplet($crew->name);
                 $directors[] = $realisateur;
@@ -151,21 +137,26 @@ class TmdbApiService
         return $directors;
     }
 
-    public function getOneVideo($detailMovie): array
+    /**
+     * @return array<string, string>
+     */
+    public function getOneVideo(stdClass $detailMovie): array
     {
-        foreach($detailMovie->videos->results as $video) {
+        foreach ($detailMovie->videos->results as $video) {
             if (
-                ($video->site === "YouTube" || $video->site === "Vimeo" || $video->site === "DailyMotion") &&
+                ($video->site === "YouTube" ||
+                    $video->site === "Vimeo" ||
+                    $video->site === "DailyMotion") &&
                 $video->type === "Trailer" &&
-                $video->iso_639_1 === "fr" && $video->iso_3166_1 === "FR"
+                $video->iso_639_1 === "fr" &&
+                $video->iso_3166_1 === "FR"
             ) {
                 return [
-                    'type' => strtolower($video->site),
-                    'identif'   => $video->key
+                    "type" => strtolower($video->site),
+                    "identif" => $video->key,
                 ];
             }
         }
         return [];
     }
-
 }

+ 23 - 16
src/Service/UserManager.php

@@ -20,14 +20,21 @@ class UserManager
     public function __construct(
         protected EntityManagerInterface $em,
         protected UserPasswordHasherInterface $passwordEncoder,
-        protected TokenGeneratorInterface $tokenGenerator
-    )
-    {
-
-    }
+        protected TokenGeneratorInterface $tokenGenerator,
+    ) {}
 
-    public function createUser(string $username, string $password, string $nom, string $prenom, string $mail, array $roles, bool $activated): void
-    {
+    /**
+     * @param array<int, string> $roles
+     */
+    public function createUser(
+        string $username,
+        string $password,
+        string $nom,
+        string $prenom,
+        string $mail,
+        array $roles,
+        bool $activated,
+    ): void {
         $user = new User();
         $options = new Profile();
         $user->setUsername($username);
@@ -44,23 +51,24 @@ class UserManager
     public function register(User $user): void
     {
         $user->setActivated(false);
-        $user->setRoles(array('ROLE_USER'));
+        $user->setRoles(["ROLE_USER"]);
         $this->enregistrerUser($user);
     }
 
-
     public function resetPassword(User $user): void
     {
         //$user->setActivated(true);
         $this->enregistrerUser($user);
     }
-    public function enregistrerUser (User $user): void
+    public function enregistrerUser(User $user): void
     {
-        $encoded = $this->passwordEncoder->hashPassword($user, $user->getPassword());
+        $encoded = $this->passwordEncoder->hashPassword(
+            $user,
+            $user->getPassword(),
+        );
         $user->setPassword($encoded);
         $this->generateToken($user);
-        if ($user->getProfile() === null)
-        {
+        if ($user->getProfile() === null) {
             $options = new Profile();
             $user->setProfile($options);
         }
@@ -68,7 +76,7 @@ class UserManager
         $this->em->flush();
     }
 
-    public function editUser (): void
+    public function editUser(): void
     {
         $this->em->flush();
     }
@@ -83,5 +91,4 @@ class UserManager
     {
         $user->setToken($this->tokenGenerator->generateToken());
     }
-
-}
+}