103 lines
2.9 KiB
PHP
103 lines
2.9 KiB
PHP
<?php
|
|
|
|
namespace App\Repository;
|
|
|
|
use App\Entity\Site;
|
|
use App\Entity\Sortie;
|
|
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
|
use Doctrine\Persistence\ManagerRegistry;
|
|
|
|
/**
|
|
* @extends ServiceEntityRepository<Sortie>
|
|
*/
|
|
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()
|
|
// ;
|
|
// }
|
|
}
|