<?php
namespace App\Repository;
use App\Entity\User;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Bridge\Doctrine\RegistryInterface;
/**
* @method User|null find($id, $lockMode = null, $lockVersion = null)
* @method User|null findOneBy(array $criteria, array $orderBy = null)
* @method User[] findAll()
* @method User[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class UserRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, User::class);
}
// /**
// * @return User[] Returns an array of User objects
// */
/*
public function findByExampleField($value)
{
return $this->createQueryBuilder('userId')
->andWhere('u.exampleField = :val')
->setParameter('val', $value)
->orderBy('userId.id', 'ASC')
->setMaxResults(10)
->getQuery()
->getResult()
;
}
*/
public function findAllWithSearch(?string $term)
{
$qb = $this->createQueryBuilder('userId')
->leftJoin('userId.children', 'children')
->addSelect('children')
;
if($term){
$qb->andWhere('userId.email = :term OR userId.lastname = :term OR children.lastName = :term')
->setParameter('term', $term);
}
return $qb->getQuery()->getOneOrNullResult();
}
public function findMultipleWithSearch(?string $term)
{
$qb = $this->createQueryBuilder('userId')
->leftJoin('userId.children', 'children')
->addSelect('children')
;
if($term){
$qb->andWhere('userId.email = :term OR userId.lastname = :term OR children.lastName = :term')
->setParameter('term', $term);
}
return $qb->getQuery()->getResult();
}
public function findUsersWithActiveSubscription()
{
$today = new \DateTime();
$limit = $today->modify('+7 days');
$qb= $this->createQueryBuilder('user')
->join('user.subscriptionOrders', 'subscriptionOrders')
->andWhere('subscriptionOrders.lastPaidCourse > :limit')
->setParameter('limit', $limit)
->andWhere('subscriptionOrders.participant IS NULL')
;
return $qb->orderBy('user.id', 'ASC')->getQuery()->getResult();
}
public function findUsersWithActiveSession()
{
$today = new \DateTime();
$limit = $today->modify('+7 days');
$qb = $this->createQueryBuilder('user')
->join('user.sessionOrder', 'sessionOrder')
->join('sessionOrder.session', 'session')
->andWhere('session.endDate > :limit')
->setParameter('limit', $limit)
->andWhere('sessionOrder.participant IS NULL')
;
return $qb->orderBy('user.id', 'ASC')->getQuery()->getResult();
}
/*
public function findOneBySomeField($value): ?User
{
return $this->createQueryBuilder('userId')
->andWhere('userId.exampleField = :val')
->setParameter('val', $value)
->getQuery()
->getOneOrNullResult()
;
}
*/
}