diff --git a/src/CourseBundle/Repository/CQuizRepository.php b/src/CourseBundle/Repository/CQuizRepository.php index 55980ed282..75a2db038c 100644 --- a/src/CourseBundle/Repository/CQuizRepository.php +++ b/src/CourseBundle/Repository/CQuizRepository.php @@ -29,13 +29,15 @@ final class CQuizRepository extends ResourceRepository implements ResourceWithLi Session $session = null, ?string $title = null, ?int $active = null, - bool $onlyPublished = true + bool $onlyPublished = true, + ?int $categoryId = null ): QueryBuilder { $qb = $this->getResourcesByCourse($course, $session); if ($onlyPublished) { $this->addDateFilterQueryBuilder(new DateTime(), $qb); } + $this->addCategoryQueryBuilder($categoryId, $qb); $this->addActiveQueryBuilder($active, $qb); $this->addNotDeletedQueryBuilder($qb); $this->addTitleQueryBuilder($title, $qb); @@ -103,6 +105,20 @@ final class CQuizRepository extends ResourceRepository implements ResourceWithLi return $qb; } + private function addCategoryQueryBuilder(?int $categoryId = null, QueryBuilder $qb = null): QueryBuilder + { + $qb = $this->getOrCreateQueryBuilder($qb); + + if (null !== $categoryId) { + $qb + ->andWhere('resource.exerciseCategory = :category_id') + ->setParameter('category_id', $categoryId) + ; + } + + return $qb; + } + /** * @param int|null $active * null = no filter