Completed
Pull Request — master (#30)
by Yuriy
37:30 queued 22:07
created

UserRepository   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 62
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 62.86%

Importance

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

5 Methods

Rating   Name   Duplication   Size   Complexity  
A loadUserByUsername() 0 8 1
A loadUserByEmail() 0 8 1
A loadUserByToken() 0 8 1
A selectUsersByParams() 0 18 2
A selectNotBlocked() 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 1
    public function loadUserByEmail($email)
27
    {
28 1
        return $this->createQueryBuilder('user')
29 1
            ->andWhere('user.email = :email')
30 1
            ->setParameter('email', $email)
31 1
            ->getQuery()
32 1
            ->getOneOrNullResult();
33
    }
34
35 1
    public function loadUserByToken($token)
36
    {
37 1
        return $this->createQueryBuilder('user')
38 1
            ->andWhere('user.apiToken = :token')
39 1
            ->setParameter('token', $token)
40 1
            ->getQuery()
41 1
            ->getOneOrNullResult();
42
    }
43
44
    /**
45
     * @param Filter $filter
46
     *
47
     * @return Query
48
     */
49 3
    public function selectUsersByParams(Filter $filter):Query
50
    {
51 3
        $postsQuery = $this->createQueryBuilder('u');
52 3
        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 3
        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