Completed
Push — dev ( f2abe4...3f06d3 )
by nonanerz
05:36 queued 05:30
created

UserRepository   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 62
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 43.48%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 6
c 2
b 0
f 0
lcom 1
cbo 4
dl 0
loc 62
ccs 10
cts 23
cp 0.4348
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A loadUserByUsername() 0 8 1
A loadUserByToken() 0 8 1
A selectUsersByParams() 0 18 2
A selectNotBlocked() 0 8 1
A loadUserByEmail() 0 8 1
1
<?php
2
3
namespace AppBundle\Repository;
4
5
use Doctrine\ORM\Query;
6
use AppBundle\Entity\DTO\Filter;
7
use Symfony\Bridge\Doctrine\Security\User\UserLoaderInterface;
8
9
/**
10
 * UserRepository.
11
 *
12
 * This class was generated by the Doctrine ORM. Add your own custom
13
 * repository methods below.
14
 */
15
class UserRepository extends \Doctrine\ORM\EntityRepository implements UserLoaderInterface
16
{
17 4
    public function loadUserByUsername($username)
18
    {
19 4
        return $this->createQueryBuilder('user')
20 4
            ->andWhere('user.apiToken = :username')
21 4
            ->setParameter('username', $username)
22 4
            ->getQuery()
23 4
            ->getOneOrNullResult();
24
    }
25
26
    public function loadUserByEmail($email)
27
    {
28
        return $this->createQueryBuilder('user')
29
            ->andWhere('user.email = :email')
30
            ->setParameter('email', $email)
31 3
            ->getQuery()
32
            ->getOneOrNullResult();
33 3
    }
34 3
35
    public function loadUserByToken($token)
36
    {
37
        return $this->createQueryBuilder('user')
38
            ->andWhere('user.apiToken = :token')
39
            ->setParameter('token', $token)
40
            ->getQuery()
41
            ->getOneOrNullResult();
42
    }
43
44
    /**
45
     * @param Filter $filter
46
     *
47 3
     * @return Query
48
     */
49
    public function selectUsersByParams(Filter $filter):Query
50
    {
51
        $postsQuery = $this->createQueryBuilder('u');
52
        if ($filter->name) {
53
            $postsQuery->where(
54
                $postsQuery->expr()->like('u.firstName', ':name')
55
            )
56
                ->orWhere(
57
                    $postsQuery->expr()->like('u.lastName', ':name')
58
                )
59
                ->orWhere(
60
                    $postsQuery->expr()->like('u.email', ':name')
61
                )
62
                ->setParameter('name', '%'.$filter->name.'%');
63
        }
64
65
        return $postsQuery->getQuery();
66
    }
67
68
    public function selectNotBlocked()
69
    {
70
        return $this->createQueryBuilder('u')
71
            ->andWhere('u.enabled = TRUE')
72
            ->orderBy('u.lastName')
73
            ->getQuery()
74
            ->getResult();
75
    }
76
}
77