FiltersConfigurationService.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. namespace App\Service\Doctrine;
  3. use App\Filter\Doctrine\TimeConstraint\AbstractTimeFilter;
  4. use App\Filter\Doctrine\TimeConstraint\ActivityYearFilter;
  5. use App\Filter\Doctrine\TimeConstraint\DatetimeFilter;
  6. use App\Service\Constraint\AbstractTimeConstraintUtils;
  7. use App\Service\Constraint\ActivityYearConstraint;
  8. use App\Service\Constraint\DateTimeConstraint;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use Doctrine\ORM\Query\Filter\SQLFilter;
  11. use Doctrine\ORM\Query\FilterCollection;
  12. /**
  13. * Service de configuration des filtres doctrine
  14. *
  15. * @see src/EventListener/OnKernelRequestPreRead.php
  16. */
  17. class FiltersConfigurationService
  18. {
  19. public function __construct(
  20. private EntityManagerInterface $entityManager,
  21. private DateTimeConstraint $dateTimeConstraint,
  22. private ActivityYearConstraint $activityYearConstraint
  23. ) {}
  24. /**
  25. * Return the existing Doctrine SQLFilters
  26. * @return FilterCollection
  27. */
  28. protected function getFilters(): FilterCollection {
  29. return $this->entityManager->getFilters();
  30. }
  31. /**
  32. * Enable and preconfigure the doctrine sql filters that apply the time constraints
  33. *
  34. * @param int $accessId
  35. * @return void
  36. */
  37. public function configureTimeConstraintFilters(int $accessId): void {
  38. /** @var DatetimeFilter $dateTimeFilter */
  39. $dateTimeFilter = $this->getFilters()->enable('date_time_filter');
  40. $dateTimeFilter->setAccessId($accessId);
  41. $dateTimeFilter->setTimeConstraint($this->dateTimeConstraint);
  42. /** @var ActivityYearFilter $activityYearFilter */
  43. $activityYearFilter = $this->getFilters()->enable('date_time_filter');
  44. $activityYearFilter->setAccessId($accessId);
  45. $activityYearFilter->setTimeConstraint($this->activityYearConstraint);
  46. }
  47. }