src/Repository/AgenceRepository.php line 22

Open in your IDE?
  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\Agence;
  4. use App\Entity\Abonnement;
  5. use App\Repository\AbonnementRepository;
  6. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  7. use Doctrine\Persistence\ManagerRegistry;
  8. /**
  9.  * @method Agence|null find($id, $lockMode = null, $lockVersion = null)
  10.  * @method Agence|null findOneBy(array $criteria, array $orderBy = null)
  11.  * @method Agence[]    findAll()
  12.  * @method Agence[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  13.  */
  14. class AgenceRepository extends ServiceEntityRepository
  15. {
  16.     private $aboRepo;
  17. public function __construct(ManagerRegistry $registryAbonnementRepository $aboRepo)
  18.     {
  19.         $this->aboRepo $aboRepo;
  20.         parent::__construct($registryAgence::class);
  21.     }
  22.      public function countAll($q '')
  23.     {
  24.         $qb $this->createQueryBuilder('a')
  25.             ->select('count(a.id)');
  26.         if(!empty($q)){
  27.             $qb->andWhere('(a.denomination like :denomination or a.denomination like :denomination2)')
  28.             ->setParameter('denomination'$q.'%')
  29.             ->setParameter('denomination2''%'.$q.'%');
  30.             if(preg_match("/agence\s/i",$q)){
  31.                 $numero preg_replace('/agence\s/i','',$q);
  32.                 $qb->orWhere('(a.numero like :numero or a.numero like :numero2)')
  33.                 ->setParameter('numero'$numero.'%')
  34.                 ->setParameter('numero2''%'.$numero.'%');
  35.             }
  36.         }
  37.        
  38.         return $qb->getQuery()->getSingleScalarResult();
  39.     }
  40.     public function findByQuery($q ''$orderby "o.ref"$order "ASC"$page 1$maxItems 20){
  41.          $offset = ($page-1) *$maxItems;
  42.         $qb $this->createQueryBuilder('a');
  43.         if(!empty($q)){
  44.         
  45.             $qb->andWhere('(a.denomination like :denomination or a.denomination like :denomination2)')
  46.             ->setParameter('denomination'$q.'%')
  47.             ->setParameter('denomination2''%'.$q.'%');
  48.             if(preg_match("/agence\s/i",$q)){
  49.                 $numero preg_replace('/agence\s/i','',$q);
  50.                 $qb->orWhere('(a.numero like :numero or a.numero like :numero2)')
  51.                 ->setParameter('numero'$numero.'%')
  52.                 ->setParameter('numero2''%'.$numero.'%');
  53.             }
  54.         }
  55.         return $qb
  56.             ->orderBy($orderby ,$order)
  57.             ->setFirstResult($offset)
  58.             ->setMaxResults($maxItems)
  59.             ->getQuery()
  60.             ->getResult()
  61.         ;
  62.     }
  63.     public function findByPeriod(){
  64.         $qb $this->createQueryBuilder('a');
  65.         
  66.         $qb->join('a.users','u')->where($qb->expr()->in('u.id',$this->aboRepo->createQueryBuilder('ab')->select('IDENTITY(ab.user)')->getDQL()));
  67.         
  68.         return $qb
  69.             ->getQuery()
  70.             ->getResult();
  71.     }
  72.     // /**
  73.     //  * @return Agence[] Returns an array of Agence objects
  74.     //  */
  75.     /*
  76.     public function findByExampleField($value)
  77.     {
  78.         return $this->createQueryBuilder('a')
  79.             ->andWhere('a.exampleField = :val')
  80.             ->setParameter('val', $value)
  81.             ->orderBy('a.id', 'ASC')
  82.             ->setMaxResults(10)
  83.             ->getQuery()
  84.             ->getResult()
  85.         ;
  86.     }
  87.     */
  88.     /*
  89.     public function findOneBySomeField($value): ?Agence
  90.     {
  91.         return $this->createQueryBuilder('a')
  92.             ->andWhere('a.exampleField = :val')
  93.             ->setParameter('val', $value)
  94.             ->getQuery()
  95.             ->getOneOrNullResult()
  96.         ;
  97.     }
  98.     */
  99. }