AdherentRepository.php 3.59 KB
Newer Older
Julien Jorry committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
<?php

namespace App\Repository;

use App\Entity\Adherent;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;

/**
 * @method Adherent|null find($id, $lockMode = null, $lockVersion = null)
 * @method Adherent|null findOneBy(array $criteria, array $orderBy = null)
 * @method Adherent[]    findAll()
 * @method Adherent[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
 */
class AdherentRepository extends ServiceEntityRepository
{
    public function __construct(ManagerRegistry $registry)
    {
        parent::__construct($registry, Adherent::class);
    }

Julien Jorry committed
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
    public function findOneByEmail($email)
    {
        $qb = $this->createQueryBuilder('p');

        return $qb
            ->leftjoin('p.user', 'u')
            ->where('p.enabled = :enabled')
            ->andWhere('u.email = :email')
            ->setParameter('enabled', true)
            ->setParameter('email', $email)
            ->getQuery()
            ->getSingleResult()
        ;
    }

Julien Jorry committed
37 38 39
    /**
     * @return Adherent[] Returns an array of Adherent objects
     */
40 41 42 43 44 45 46 47 48
    public function findByData(array $data)
    {
        $qb = $this->createQueryBuilder('p');

        $qb = $qb->leftjoin('p.user', 'u');

        if (isset($data['email'])) {
            $qb =
                $qb
49
                    ->orWhere('u.email = :email')
50 51 52
                    ->setParameter('email', $data['email'])
                ;
        }
53 54 55 56 57 58 59 60
        if (isset($data['name'])) {
            $qb =
                $qb
                    ->orWhere('u.firstname = :firstname')
                    ->orWhere('u.lastname = :firstname')
                    ->setParameter('email', $data['name'])
                ;
        }
61 62 63 64 65 66 67

        return $qb
            ->getQuery()
            ->getOneOrNullResult()
        ;
    }

68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
    public function findsByData(array $data)
    {
        $qb = $this->createQueryBuilder('p');

        $qb = $qb
            ->leftjoin('p.user', 'u')
        ;

        if (isset($data['email'])) {
            $qb =
                $qb
                    ->orWhere('u.email = :email')
                    ->setParameter('email', $data['email'])
                ;
        }
        if (isset($data['name'])) {
            $qb =
                $qb
                    ->orWhere('CONCAT(u.firstname, \' \', u.lastname) = :name')
                    ->orWhere('CONCAT(u.lastname, \' \', u.firstname) = :name')
                    ->setParameter('name', $data['name'])
                ;
        }

        return $qb
            ->andWhere('p.enabled = :enabled')
            ->setParameter('enabled', true)
            ->orderBy('u.lastname', 'ASC')
            ->getQuery()
            ->getResult()
        ;
    }

Julien Jorry committed
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
    public function findOrderByName()
    {
        $qb = $this->createQueryBuilder('p');

        return $qb
            ->leftjoin('p.user', 'u')
            ->where('p.enabled = :enabled')
            ->setParameter('enabled', true)
            ->orderBy('u.lastname', 'ASC')
            ->getQuery()
            ->getResult()
        ;
    }

    /**
     * @return Adherent[] Returns an array of Adherent objects
     */
    public function findbyExclude(Adherent $adherent)
    {
        $qb = $this->createQueryBuilder('p');

        return $qb
            ->leftjoin('p.user', 'u')
            ->where('p.id != :presta')
            ->andWhere('p.enabled = :enabled')
            ->setParameter('presta', $adherent->getId())
            ->setParameter('enabled', true)
            ->orderBy('u.lastname', 'ASC')
            ->getQuery()
            ->getResult()
        ;
    }
}