src/Repository/Cvs/JobsFiltersRepository.php line 53

Open in your IDE?
  1. <?php
  2. namespace App\Repository\Cvs;
  3. use App\Entity\Cvs\JobsFilters;
  4. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  5. use Doctrine\Persistence\ManagerRegistry;
  6. /**
  7.  * @extends ServiceEntityRepository<JobsFilters>
  8.  *
  9.  * @method JobsFilters|null find($id, $lockMode = null, $lockVersion = null)
  10.  * @method JobsFilters|null findOneBy(array $criteria, array $orderBy = null)
  11.  * @method JobsFilters[]    findAll()
  12.  * @method JobsFilters[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  13.  */
  14. class JobsFiltersRepository extends ServiceEntityRepository
  15. {
  16.     public function __construct(ManagerRegistry $registry)
  17.     {
  18.         parent::__construct($registryJobsFilters::class);
  19.     }
  20.     /**
  21.      * Tous les filtres actifs pour une locale, triés par position.
  22.      *
  23.      * @return JobsFilters[]
  24.      */
  25.     public function findActiveByLocale(string $locale, ?int $limit null): array
  26.     {
  27.         $qb $this->createQueryBuilder('f')
  28.             ->where('f.locale = :locale')
  29.             ->andWhere('f.online = :online')
  30.             ->setParameter('locale'$locale)
  31.             ->setParameter('online'true)
  32.             ->orderBy('f.position''ASC')
  33.             ->addOrderBy('f.id''ASC');
  34.         if ($limit !== null) {
  35.             $qb->setMaxResults($limit);
  36.         }
  37.         return $qb->getQuery()->getResult();
  38.     }
  39.     /**
  40.      * Filtres actifs filtrés par type (city, category, job, custom...) pour une locale.
  41.      *
  42.      * @return JobsFilters[]
  43.      */
  44.     public function findActiveByLocaleAndType(string $localestring $type, ?int $limit null): array
  45.     {
  46.         $qb $this->createQueryBuilder('f')
  47.             ->where('f.locale = :locale')
  48.             ->andWhere('f.online = :online')
  49.             ->andWhere('f.type = :type')
  50.             ->setParameter('locale'$locale)
  51.             ->setParameter('online'true)
  52.             ->setParameter('type'$type)
  53.             ->orderBy('f.position''ASC')
  54.             ->addOrderBy('f.id''ASC');
  55.         if ($limit !== null) {
  56.             $qb->setMaxResults($limit);
  57.         }
  58.         return $qb->getQuery()->getResult();
  59.     }
  60.     /**
  61.      * Trouve un filtre par son slug et sa locale (pour la page landing /{locale}/jobs/{slug}).
  62.      */
  63.     public function findOneBySlugAndLocale(string $slugstring $locale): ?JobsFilters
  64.     {
  65.         return $this->createQueryBuilder('f')
  66.             ->where('f.slug = :slug')
  67.             ->andWhere('f.locale = :locale')
  68.             ->andWhere('f.online = :online')
  69.             ->setParameter('slug'$slug)
  70.             ->setParameter('locale'$locale)
  71.             ->setParameter('online'true)
  72.             ->getQuery()
  73.             ->getOneOrNullResult();
  74.     }
  75. }