123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- <?php
- namespace App\Repository;
- use App\Entity\Event;
- use App\Entity\Gamemaster;
- use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
- use Doctrine\Persistence\ManagerRegistry;
- use Doctrine\DBAL\Types\Types;
- /**
- * @extends ServiceEntityRepository<Event>
- */
- class EventRepository extends ServiceEntityRepository
- {
- public function __construct(ManagerRegistry $registry)
- {
- parent::__construct($registry, Event::class);
- }
- /*
- * Extraire les événements :
- * - public = true
- * - published = true
- * - endOn > now
- */
- public function findEventsToCome(bool $public=true): array
- {
- // Et il faut la date du moment
- $dateNow = new \DateTime('now');
- $qb = $this->createQueryBuilder('e')
- ->where('e.published = :published')
- ->andWhere('e.endOn > :dateNow')
- ->setParameter('published', true)
- ->setParameter('dateNow', $dateNow);
- // Prise en compte public / privé
- if ($public) {
- $qb->andWhere('(e.private = false OR e.private IS NULL)');
- }
-
- $query = $qb->orderBy('e.startOn', 'ASC')
- ->getQuery();
- return $query->getResult();
- }
- /**
- * @return Event[]
- */
- public function findEventsToPrepare(?Gamemaster $gamemaster): array
- {
- // Et il faut la date du moment
- $dateNow = new \DateTime('now');
- $qb = $this->createQueryBuilder('e')
- ->where('e.published IS NULL OR e.published == :published')
- ->andWhere('e.endOn > :dateNow')
- ->setParameter('published', false)
- ->setParameter('dateNow', $dateNow)
- ;
- // Ne marche pas, va savoir ! => ajouter ?Gamemaster $gamemaster dans la function
- // TODO: à revoir
- // if ($gamemaster) {
- // $qb->andWhere(':gamemaster MEMBER OF e.gamemastersAssigned')
- // ->setParameter('gamemaster', $gamemaster);
- //}
-
- $query = $qb->orderBy('e.startOn', 'ASC')
- ->getQuery();
- $result = $query->getResult();
- if ($gamemaster) {
- $result = array_filter($result, function (Event $event) use ($gamemaster) {
- return $event->getGamemastersAssigned()->contains($gamemaster);
- });
- }
- return array_values($result);
- }
- // /**
- // * @return Event[] Returns an array of Event objects
- // */
- // public function findByExampleField($value): array
- // {
- // return $this->createQueryBuilder('e')
- // ->andWhere('e.exampleField = :val')
- // ->setParameter('val', $value)
- // ->orderBy('e.id', 'ASC')
- // ->setMaxResults(10)
- // ->getQuery()
- // ->getResult()
- // ;
- // }
- // public function findOneBySomeField($value): ?Event
- // {
- // return $this->createQueryBuilder('e')
- // ->andWhere('e.exampleField = :val')
- // ->setParameter('val', $value)
- // ->getQuery()
- // ->getOneOrNullResult()
- // ;
- // }
- }
|