<?phpnamespace App\Repository\Cvs;use App\Entity\Cvs\JobsFilters;use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;use Doctrine\Persistence\ManagerRegistry;/** * @extends ServiceEntityRepository<JobsFilters> * * @method JobsFilters|null find($id, $lockMode = null, $lockVersion = null) * @method JobsFilters|null findOneBy(array $criteria, array $orderBy = null) * @method JobsFilters[] findAll() * @method JobsFilters[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) */class JobsFiltersRepository extends ServiceEntityRepository{ public function __construct(ManagerRegistry $registry) { parent::__construct($registry, JobsFilters::class); } /** * Tous les filtres actifs pour une locale, triés par position. * * @return JobsFilters[] */ public function findActiveByLocale(string $locale, ?int $limit = null): array { $qb = $this->createQueryBuilder('f') ->where('f.locale = :locale') ->andWhere('f.online = :online') ->setParameter('locale', $locale) ->setParameter('online', true) ->orderBy('f.position', 'ASC') ->addOrderBy('f.id', 'ASC'); if ($limit !== null) { $qb->setMaxResults($limit); } return $qb->getQuery()->getResult(); } /** * Filtres actifs filtrés par type (city, category, job, custom...) pour une locale. * * @return JobsFilters[] */ public function findActiveByLocaleAndType(string $locale, string $type, ?int $limit = null): array { $qb = $this->createQueryBuilder('f') ->where('f.locale = :locale') ->andWhere('f.online = :online') ->andWhere('f.type = :type') ->setParameter('locale', $locale) ->setParameter('online', true) ->setParameter('type', $type) ->orderBy('f.position', 'ASC') ->addOrderBy('f.id', 'ASC'); if ($limit !== null) { $qb->setMaxResults($limit); } return $qb->getQuery()->getResult(); } /** * Trouve un filtre par son slug et sa locale (pour la page landing /{locale}/jobs/{slug}). */ public function findOneBySlugAndLocale(string $slug, string $locale): ?JobsFilters { return $this->createQueryBuilder('f') ->where('f.slug = :slug') ->andWhere('f.locale = :locale') ->andWhere('f.online = :online') ->setParameter('slug', $slug) ->setParameter('locale', $locale) ->setParameter('online', true) ->getQuery() ->getOneOrNullResult(); }}