DateTimeConstraintExtensionAdditional.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Doctrine\Access\AdditionalExtension;
  4. use Doctrine\ORM\QueryBuilder;
  5. use Symfony\Component\HttpFoundation\RequestStack;
  6. /**
  7. * Contrainte supplémentaire pour CurrentAccessExtension.
  8. * Ajoute un critère de dates.
  9. */
  10. class DateTimeConstraintExtensionAdditional implements AdditionalAccessExtensionInterface
  11. {
  12. public function __construct(
  13. private RequestStack $requestStack
  14. ) {
  15. }
  16. public function support(string $name): bool
  17. {
  18. return
  19. $this->requestStack->getMainRequest()->isMethod('GET')
  20. && $this->requestStack->getMainRequest()->get('_time_constraint', true) == true
  21. ;
  22. }
  23. public function addWhere(QueryBuilder $queryBuilder): void
  24. {
  25. $rootAliases = $queryBuilder->getRootAliases();
  26. if (empty($rootAliases)) {
  27. throw new \LogicException('No root alias defined.');
  28. }
  29. $rootAlias = $rootAliases[0];
  30. $queryBuilder->innerJoin(sprintf('%s.organizationFunction', $rootAlias), 'organization_function');
  31. }
  32. }