|
|
@@ -7,6 +7,7 @@ use App\Entity\User;
|
|
|
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
|
|
use Doctrine\ORM\QueryBuilder;
|
|
|
use Doctrine\Persistence\ManagerRegistry;
|
|
|
+use SortDirection;
|
|
|
|
|
|
/**
|
|
|
* @extends ServiceEntityRepository<Film>
|
|
|
@@ -37,7 +38,7 @@ class FilmRepository extends ServiceEntityRepository
|
|
|
|
|
|
/**
|
|
|
* @param array<int, string> $genreNames
|
|
|
- * @param array<string, string> $filters
|
|
|
+ * @param array<string, SortDirection|string> $filters
|
|
|
*/
|
|
|
public function queryFilmWithGenre(
|
|
|
array $genreNames,
|
|
|
@@ -65,7 +66,7 @@ class FilmRepository extends ServiceEntityRepository
|
|
|
|
|
|
/**
|
|
|
* @param array<int, string> $realisateursNames
|
|
|
- * @param array<string, string> $filters
|
|
|
+ * @param array<string, SortDirection|string> $filters
|
|
|
*/
|
|
|
public function queryFilmWithReal(
|
|
|
array $realisateursNames,
|
|
|
@@ -118,24 +119,29 @@ class FilmRepository extends ServiceEntityRepository
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * @param array<string, string> $filters
|
|
|
+ * @param array<string, SortDirection|string> $filters
|
|
|
*/
|
|
|
public function queryFilter(
|
|
|
int $page = 1,
|
|
|
array $filters = [],
|
|
|
): QueryBuilder {
|
|
|
$qb = $this->createQueryBuilder("f");
|
|
|
-
|
|
|
+
|
|
|
$sortBy = $filters["sortBy"] ?? "dateSubmited";
|
|
|
- $sortOrder = $filters["sortOrder"] ?? "DESC";
|
|
|
-
|
|
|
+ $sortOrder = $filters["sortOrder"] ?? SortDirection::Descending;
|
|
|
+ $direction = $sortOrder instanceof SortDirection
|
|
|
+ ? $sortOrder
|
|
|
+ : (strcasecmp((string) $sortOrder, "DESC") === 0
|
|
|
+ ? SortDirection::Descending
|
|
|
+ : SortDirection::Ascending);
|
|
|
+
|
|
|
if ($sortBy === "note") {
|
|
|
$qb->orderBy(
|
|
|
"(SELECT AVG(c.note) FROM App\\Entity\\Commentaire c WHERE c.film = f AND c.note IS NOT NULL)",
|
|
|
- $sortOrder
|
|
|
+ $direction
|
|
|
);
|
|
|
} else {
|
|
|
- $qb->orderBy("f." . $sortBy, $sortOrder);
|
|
|
+ $qb->orderBy("f." . $sortBy, $direction);
|
|
|
}
|
|
|
|
|
|
if (!empty($filters["userWantToView"])) {
|
|
|
@@ -166,7 +172,7 @@ class FilmRepository extends ServiceEntityRepository
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * @param array<string, string> $filters
|
|
|
+ * @param array<string, SortDirection|string> $filters
|
|
|
*/
|
|
|
public function queryTous(int $page = 1, array $filters = []): QueryBuilder
|
|
|
{
|
|
|
@@ -195,7 +201,7 @@ class FilmRepository extends ServiceEntityRepository
|
|
|
->addSelect("rea")
|
|
|
->where("f.dateSortie > :date")
|
|
|
->setParameter("date", $date)
|
|
|
- ->orderBy("f.dateSortie", "ASC");
|
|
|
+ ->orderBy("f.dateSortie", SortDirection::Ascending);
|
|
|
return $qb->getQuery()->getResult();
|
|
|
}
|
|
|
|
|
|
@@ -274,7 +280,7 @@ class FilmRepository extends ServiceEntityRepository
|
|
|
"DATE_FORMAT(f.dateSubmited, '%Y-%m') as month, COUNT(f.id) as entryCount",
|
|
|
)
|
|
|
->groupBy("month")
|
|
|
- ->orderBy("month", "ASC")
|
|
|
+ ->orderBy("month", SortDirection::Ascending)
|
|
|
->getQuery()
|
|
|
->getResult();
|
|
|
}
|
|
|
@@ -306,7 +312,7 @@ class FilmRepository extends ServiceEntityRepository
|
|
|
// 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
|
|
|
+ ->orderBy("f.dateSubmited", SortDirection::Ascending) // 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
|