CourseRepository.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Repository\Booking;
  4. use App\Entity\Booking\Course;
  5. use App\Entity\Organization\Organization;
  6. use App\Service\Doctrine\FiltersConfigurationService;
  7. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  8. use Doctrine\Persistence\ManagerRegistry;
  9. class CourseRepository extends ServiceEntityRepository
  10. {
  11. public function __construct(
  12. ManagerRegistry $registry,
  13. private FiltersConfigurationService $filtersConfigurationService,
  14. ) {
  15. parent::__construct($registry, Course::class);
  16. }
  17. /**
  18. * Récupère les cours d'une organisation d'une date à une autre.
  19. *
  20. * @return list<Course>
  21. */
  22. public function getCoursesToFrom(Organization $organization, \DateTimeInterface $start, \DateTimeInterface $end): array
  23. {
  24. $this->filtersConfigurationService->suspendTimeConstraintFilters();
  25. $queryBuilder = $this->createQueryBuilder('course');
  26. $queryBuilder
  27. ->andWhere(
  28. $queryBuilder->expr()->between('course.datetimeStart', ':dateStart', ':dateEnd')
  29. )
  30. ->andWhere('course.organization = :organization')
  31. ->setParameter('dateStart', $start)
  32. ->setParameter('dateEnd', $end)
  33. ->setParameter('organization', $organization)
  34. ;
  35. $results = $queryBuilder->getQuery()->getResult();
  36. $this->filtersConfigurationService->restoreTimeConstraintFilters();
  37. return $results;
  38. }
  39. }