src/Repository/UserRepository.php line 19

Open in your IDE?
  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\User;
  4. use App\Enum\Roles;
  5. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  6. use Doctrine\ORM\Query;
  7. use Doctrine\Persistence\ManagerRegistry;
  8. /**
  9.  * @method User|null find($id, $lockMode = null, $lockVersion = null)
  10.  * @method User|null findOneBy(array $criteria, array $orderBy = null)
  11.  * @method User[]    findAll()
  12.  * @method User[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  13.  */
  14. class UserRepository extends ServiceEntityRepository
  15. {
  16.     public function __construct(ManagerRegistry $registry)
  17.     {
  18.         parent::__construct($registryUser::class);
  19.     }
  20.     public function filtered(array $filters = []): Query
  21.     {
  22.         $builder $this->createQueryBuilder('user')
  23.             ->select('user, profile')
  24.             ->leftJoin('user.profile''profile')
  25.             ->orderBy('user.createdAt''DESC');
  26.         if (!empty($filters['name'])) {
  27.             $builder
  28.                 ->andWhere('profile.firstName LIKE :name or profile.lastName like :name')
  29.                 ->setParameter('name'"%{$filters['name']}%");
  30.         }
  31.         if (!empty($filters['email'])) {
  32.             $builder->andWhere('user.email LIKE :email')
  33.                 ->setParameter('email'"%{$filters['email']}%");
  34.         }
  35.         if (!empty($filters['role']) && $filters['role'] !== Roles::USER) {
  36.             $builder->andWhere('user.roles like :role')
  37.                 ->setParameter('role'"%{$filters['role']}%");
  38.         }
  39.         if (array_key_exists('status'$filters) && $filters['status'] !== 'any') {
  40.             $builder->andWhere('user.active = :status')
  41.                 ->setParameter('status', (bool)$filters['status']);
  42.         }
  43.         return $builder->getQuery();
  44.     }
  45.     public function getOnlyVivacreditUsers($email)
  46.     {
  47.         return $this->createQueryBuilder('user')
  48.             ->andWhere('user.email LIKE :email')
  49.             ->setParameter('email''%' $email '%')
  50.             ->getQuery()
  51.             ->getResult();
  52.     }
  53. }