src/Repository/JPORepository.php line 107

Open in your IDE?
  1. <?php
  2. namespace App\Repository;
  3. use App\Common\LieuInterface;
  4. use App\Entity\JPO;
  5. use Date;
  6. use App\Entity\Etablissement;
  7. use App\Repository\Helper\LieuFilterTrait;
  8. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  9. use Doctrine\Persistence\ManagerRegistry;
  10. /**
  11.  * @method JPO|null find($id, $lockMode = null, $lockVersion = null)
  12.  * @method JPO|null findOneBy(array $criteria, array $orderBy = null)
  13.  * @method JPO[]    findAll()
  14.  * @method JPO[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  15.  */
  16. class JPORepository extends ServiceEntityRepository
  17. {
  18.     use LieuFilterTrait;
  19.     public function __construct(ManagerRegistry $registry)
  20.     {
  21.         parent::__construct($registryJPO::class);
  22.     }
  23.     /**
  24.      * @return JPO[] Returns an array of JPO objects
  25.      */
  26.     public function getLast($limit=3)
  27.     {
  28.         return $this->createQueryBuilder('j')
  29.             ->andWhere('j.etablissement IS NOT NULL')
  30.             ->andWhere('j.date >= CURRENT_TIMESTAMP()')
  31.             ->orderBy('j.date''ASC')
  32.             ->setMaxResults($limit)
  33.             ->getQuery()
  34.             ->getResult()
  35.         ;
  36.     }
  37.     /**
  38.      * @return JPO[] Returns an array of JPO objects
  39.      */
  40.     public function getLastByEtablissement(Etablissement $etablissement$limit=1)
  41.     {
  42.         return $this->createQueryBuilder('j')
  43.             ->andWhere('j.etablissement = :ets')
  44.             ->andWhere('j.date >= :val')
  45.             ->setParameter('ets'$etablissement)
  46.             ->orderBy('j.date''ASC')
  47.             ->setParameter('val', \date('Y-m-d'))
  48.             ->setMaxResults($limit)
  49.             ->getQuery()
  50.             ->getResult()
  51.         ;
  52.     }
  53.     public function findByLieu(LieuInterface $lieuint $limit 2, array $filter null$types null): array
  54.     {
  55.         $builder $this->createQueryBuilder('j');
  56.         $builder
  57.             ->innerJoin('j.etablissement''etablissement')
  58.             ->innerJoin('etablissement.ville''ville')
  59.             ->innerJoin('ville.departement''departement')
  60.             ->innerJoin('departement.ancienneRegion''ancienneRegion')
  61.             ->innerJoin('ancienneRegion.region''region')
  62.             ->andWhere('j.date >= :val')
  63.             ->setParameter('val', \date('Y-m-d'))
  64.             ->setMaxResults($limit)
  65.             ->orderBy('j.date''ASC');
  66.         if ($lieu->getSlug() !="default") {
  67.             $this->addWhereLieuToQuery($builder$lieu);
  68.           }
  69.         if ($filter) {
  70.             $builder->andWhere($builder->expr()->in('j.etablissement'$filter));
  71.         }
  72.         if ($types) {
  73.             $builder->andWhere($builder->expr()->in('etablissement.type'$types));
  74.         }
  75.         return $builder
  76.             ->getQuery()
  77.             ->getResult();
  78.     }
  79.     public function findAlaUne(int $limit): array
  80.     {
  81.         $builder $this->createQueryBuilder('j');
  82.         $builder
  83.             ->innerJoin('j.etablissement''etablissement')
  84.             ->setMaxResults($limit)
  85.             ->orderBy('j.date''ASC')
  86.             ->where($builder->expr()->eq('etablissement.jpoPlus',true))
  87.             ->andWhere('j.date >= :val')
  88.             ->setParameter('val', \date('Y-m-d'));
  89.         return $builder
  90.             ->getQuery()
  91.             ->getResult();
  92.     }
  93.     // /**
  94.     //  * @return JPO[] Returns an array of JPO objects
  95.     //  */
  96.     /*
  97.     public function findByExampleField($value)
  98.     {
  99.         return $this->createQueryBuilder('j')
  100.             ->andWhere('j.exampleField = :val')
  101.             ->setParameter('val', $value)
  102.             ->orderBy('j.id', 'ASC')
  103.             ->setMaxResults(10)
  104.             ->getQuery()
  105.             ->getResult()
  106.         ;
  107.     }
  108.     */
  109.     /*
  110.     public function findOneBySomeField($value): ?JPO
  111.     {
  112.         return $this->createQueryBuilder('j')
  113.             ->andWhere('j.exampleField = :val')
  114.             ->setParameter('val', $value)
  115.             ->getQuery()
  116.             ->getOneOrNullResult()
  117.         ;
  118.     }
  119.     */
  120. }