| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 | <?phpnamespace 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()    //        ;    //    }}
 |