*/ class SortieRepository extends ServiceEntityRepository { public function __construct(ManagerRegistry $registry) { parent::__construct($registry, Sortie::class); } public function findWithFilters($search, $siteId, $startDate, $endDate, $organisateur, $inscrit, $nonInscrit, $passees, $user) { $qb = $this->createQueryBuilder('s'); if ($search) { $qb->andWhere('s.nom LIKE :search') ->setParameter('search', '%' . $search . '%'); } if ($siteId) { $qb->andWhere('s.site = :siteId') ->setParameter('siteId', $siteId); } if ($startDate) { $qb->andWhere('s.dateHeureDebut >= :startDate') ->setParameter('startDate', new \DateTime($startDate)); } if ($endDate) { $qb->andWhere('s.dateHeureDebut <= :endDate') ->setParameter('endDate', new \DateTime($endDate)); } if ($organisateur) { $qb->andWhere('s.organisateur = :user') ->setParameter('user', $user); } if ($inscrit) { $qb->andWhere(':user MEMBER OF s.participants') ->setParameter('user', $user); } if ($nonInscrit) { $qb->andWhere(':user NOT MEMBER OF s.participants') ->setParameter('user', $user); } if ($passees) { $qb->andWhere('s.dateHeureDebut < :now') ->setParameter('now', new \DateTime()); } else { $qb->andWhere('s.dateHeureDebut >= :now') ->setParameter('now', new \DateTime()); } return $qb->getQuery()->getResult(); } public function findAllSites() { return $this->getEntityManager() ->getRepository(Site::class) ->findAll(); } // /** // * @return Sortie[] Returns an array of Sortie objects // */ // public function findByExampleField($value): array // { // return $this->createQueryBuilder('s') // ->andWhere('s.exampleField = :val') // ->setParameter('val', $value) // ->orderBy('s.id', 'ASC') // ->setMaxResults(10) // ->getQuery() // ->getResult() // ; // } // public function findOneBySomeField($value): ?Sortie // { // return $this->createQueryBuilder('s') // ->andWhere('s.exampleField = :val') // ->setParameter('val', $value) // ->getQuery() // ->getOneOrNullResult() // ; // } }