src/Controller/Admin/Filter/RecapHoraireFilter.php line 41

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin\Filter;
  3. use App\Entity\Admin;
  4. use App\Entity\User;
  5. use App\Entity\Mission;
  6. use App\Entity\Service;
  7. use App\Entity\Laboratoire;
  8. use Doctrine\ORM\QueryBuilder;
  9. use Doctrine\ORM\Query\Expr\Join;
  10. use phpDocumentor\Reflection\Types\Integer;
  11. use Symfony\Component\Security\Core\Security;
  12. use App\Form\Type\Admin\DateCalendarFilterType;
  13. use EasyCorp\Bundle\EasyAdminBundle\Dto\FieldDto;
  14. use EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto;
  15. use Symfony\Component\HttpFoundation\Session\Session;
  16. use EasyCorp\Bundle\EasyAdminBundle\Dto\FilterDataDto;
  17. use EasyCorp\Bundle\EasyAdminBundle\Filter\FilterTrait;
  18. use Symfony\Component\Security\Core\User\UserInterface;
  19. use EasyCorp\Bundle\EasyAdminBundle\Contracts\Filter\FilterInterface;
  20. use EasyCorp\Bundle\EasyAdminBundle\Form\Filter\Type\BooleanFilterType;
  21. class RecapHoraireFilter implements FilterInterface
  22. {
  23.     use FilterTrait;
  24.     private $userId;
  25.     public function setUserId($userId)
  26.     {
  27.         $this->userId $userId;
  28.         return $this;
  29.     }
  30.     public function getUserId()
  31.     {
  32.         return $this->userId;
  33.     }
  34.     public static function new(string $propertyName$label null$userId): self
  35.     {
  36.         return (new self())
  37.             ->setUserId($userId)
  38.             ->setFilterFqcn(__CLASS__)
  39.             ->setProperty($propertyName)
  40.             ->setLabel($label)
  41.             ->setFormType(BooleanFilterType::class);
  42.     }
  43.     public function apply(QueryBuilder $queryBuilderFilterDataDto $filterDataDto, ?FieldDto $fieldDtoEntityDto $entityDto): void
  44.     {
  45.         // dd(sprintf('%s. = :userId', $filterDataDto->getEntityAlias(), $filterDataDto->getProperty()));
  46.         if (true === $filterDataDto->getValue()) {
  47.             $queryBuilder
  48.                 ->innerJoin(Mission::class, 'mi'Join::WITH$filterDataDto->getEntityAlias() . '.mission = mi')
  49.                 ->innerJoin(Service::class, 'se'Join::WITH'mi.service = se')
  50.                 ->innerJoin(Laboratoire::class, 'la'Join::WITH'se.laboratoire = la')
  51.                 ->innerJoin(Admin::class, 'a'Join::WITH'la.admin = a')
  52.                 ->andWhere('a.id = :userId')
  53.                 ->setParameter('userId'$this->getUserId());
  54.         } else {
  55.             $queryBuilder
  56.                 ->innerJoin(Mission::class, 'mi'Join::WITH$filterDataDto->getEntityAlias() . '.mission = mi')
  57.                 ->innerJoin(Service::class, 'se'Join::WITH'mi.service = se')
  58.                 ->innerJoin(Laboratoire::class, 'la'Join::WITH'se.laboratoire = la')
  59.                 ->innerJoin(Admin::class, 'a'Join::WITH'la.admin = a')
  60.                 ->andWhere('a.id <> :userId')
  61.                 ->setParameter('userId'$this->getUserId());
  62.         }
  63.         // ...
  64.     }
  65. }