*/ 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() // ; // } }