src/Repository/AffiliateRequestRepository.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\AffiliateRequest;
  4. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  5. use Doctrine\Common\Collections\ArrayCollection;
  6. use Doctrine\Common\Collections\Criteria;
  7. use Doctrine\DBAL\Types\Types;
  8. use Doctrine\ORM\Query;
  9. use Doctrine\ORM\Query\Parameter;
  10. use Doctrine\Persistence\ManagerRegistry;
  11. use Pagerfanta\Doctrine\ORM\QueryAdapter;
  12. use Pagerfanta\Pagerfanta;
  13. /**
  14.  * @extends ServiceEntityRepository<AffiliateRequest>
  15.  *
  16.  * @method AffiliateRequest|null find($id, $lockMode = null, $lockVersion = null)
  17.  * @method AffiliateRequest|null findOneBy(array $criteria, array $orderBy = null)
  18.  * @method AffiliateRequest[]    findAll()
  19.  * @method AffiliateRequest[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  20.  */
  21. class AffiliateRequestRepository extends ServiceEntityRepository
  22. {
  23.     public function __construct(ManagerRegistry $registry)
  24.     {
  25.         parent::__construct($registryAffiliateRequest::class);
  26.     }
  27.     public function add(AffiliateRequest $entitybool $flush false): void
  28.     {
  29.         $this->getEntityManager()->persist($entity);
  30.         if ($flush) {
  31.             $this->getEntityManager()->flush();
  32.         }
  33.     }
  34.     public function remove(AffiliateRequest $entitybool $flush false): void
  35.     {
  36.         $this->getEntityManager()->remove($entity);
  37.         if ($flush) {
  38.             $this->getEntityManager()->flush();
  39.         }
  40.     }
  41.     public function getResults(string $query nullint $page 1int $limit 20): Pagerfanta
  42.     {
  43.         $qb $this->createQueryBuilder('ar');
  44.         if ($query) {
  45.             $qb->andWhere($qb->expr()->orX(
  46.                 $qb->expr()->like('ar.firstname'':query'),
  47.                 $qb->expr()->like('ar.lastname'':query'),
  48.                 $qb->expr()->like('ar.email'':query'),
  49.                 $qb->expr()->like('ar.phone'':query'),
  50.                 $qb->expr()->like('ar.city'':query'),
  51.             ))->setParameters(new ArrayCollection([
  52.                 new Parameter('query''%'.$query.'%'),
  53.             ]));
  54.         }
  55.         $qb->orderBy('ar.createdAt'Criteria::DESC);
  56.         $paginator = new Pagerfanta(new QueryAdapter($qb));
  57.         $paginator
  58.             ->setMaxPerPage($limit)
  59.             ->setCurrentPage($page);
  60.         return $paginator;
  61.     }
  62.     public function getExportQuery(\DateTime $dateBegin\DateTime $dateEnd): Query
  63.     {
  64.         $qb $this->createQueryBuilder('ar');
  65.         $qb->andWhere($qb->expr()->andX(
  66.             $qb->expr()->gte('ar.createdAt'':date_begin'),
  67.             $qb->expr()->lte('ar.createdAt'':date_end'),
  68.         ))->setParameters(new ArrayCollection([
  69.             new Parameter('date_begin'$dateBeginTypes::DATETIME_MUTABLE),
  70.             new Parameter('date_end'$dateEndTypes::DATETIME_MUTABLE),
  71.         ]));
  72.         $qb->orderBy('ar.createdAt'Criteria::ASC);
  73.         return $qb->getQuery();
  74.     }
  75. }