EventRepository.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\Event;
  4. use App\Entity\Gamemaster;
  5. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. use Doctrine\DBAL\Types\Types;
  8. /**
  9. * @extends ServiceEntityRepository<Event>
  10. */
  11. class EventRepository extends ServiceEntityRepository
  12. {
  13. public function __construct(ManagerRegistry $registry)
  14. {
  15. parent::__construct($registry, Event::class);
  16. }
  17. /*
  18. * Extraire les événements :
  19. * - public = true
  20. * - published = true
  21. * - endOn > now
  22. */
  23. public function findEventsToCome(bool $public=true): array
  24. {
  25. // Et il faut la date du moment
  26. $dateNow = new \DateTime('now');
  27. $qb = $this->createQueryBuilder('e')
  28. ->where('e.published = :published')
  29. ->andWhere('e.endOn > :dateNow')
  30. ->setParameter('published', true)
  31. ->setParameter('dateNow', $dateNow);
  32. // Prise en compte public / privé
  33. if ($public) {
  34. $qb->andWhere('(e.private = false OR e.private IS NULL)');
  35. }
  36. $query = $qb->orderBy('e.startOn', 'ASC')
  37. ->getQuery();
  38. return $query->getResult();
  39. }
  40. /**
  41. * @return Event[]
  42. */
  43. public function findEventsToPrepare(?Gamemaster $gamemaster): array
  44. {
  45. // Et il faut la date du moment
  46. $dateNow = new \DateTime('now');
  47. $qb = $this->createQueryBuilder('e')
  48. ->where('e.published IS NULL OR e.published == :published')
  49. ->andWhere('e.endOn > :dateNow')
  50. ->setParameter('published', false)
  51. ->setParameter('dateNow', $dateNow)
  52. ;
  53. // Ne marche pas, va savoir ! => ajouter ?Gamemaster $gamemaster dans la function
  54. // TODO: à revoir
  55. // if ($gamemaster) {
  56. // $qb->andWhere(':gamemaster MEMBER OF e.gamemastersAssigned')
  57. // ->setParameter('gamemaster', $gamemaster);
  58. //}
  59. $query = $qb->orderBy('e.startOn', 'ASC')
  60. ->getQuery();
  61. $result = $query->getResult();
  62. if ($gamemaster) {
  63. $result = array_filter($result, function (Event $event) use ($gamemaster) {
  64. return $event->getGamemastersAssigned()->contains($gamemaster);
  65. });
  66. }
  67. return array_values($result);
  68. }
  69. // /**
  70. // * @return Event[] Returns an array of Event objects
  71. // */
  72. // public function findByExampleField($value): array
  73. // {
  74. // return $this->createQueryBuilder('e')
  75. // ->andWhere('e.exampleField = :val')
  76. // ->setParameter('val', $value)
  77. // ->orderBy('e.id', 'ASC')
  78. // ->setMaxResults(10)
  79. // ->getQuery()
  80. // ->getResult()
  81. // ;
  82. // }
  83. // public function findOneBySomeField($value): ?Event
  84. // {
  85. // return $this->createQueryBuilder('e')
  86. // ->andWhere('e.exampleField = :val')
  87. // ->setParameter('val', $value)
  88. // ->getQuery()
  89. // ->getOneOrNullResult()
  90. // ;
  91. // }
  92. }