Test Failed
Push — master ( 6816bc...e56407 )
by Mykolas
26:04 queued 05:09
created

CustomerRepository::getCustomerById()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 7
rs 10
1
<?php
2
3
4
namespace PTS\SyliusReferralPlugin\Repository;
5
6
use Doctrine\ORM\Tools\Pagination\Paginator;
7
use Sylius\Bundle\CoreBundle\Doctrine\ORM\CustomerRepository as BaseCustomerRepository;
8
9
class CustomerRepository extends BaseCustomerRepository
10
{
11
    public function getCustomerById($id)
12
    {
13
        $query = $this->createQueryBuilder('c')
14
            ->where('c.id = :id')
15
            ->setParameter('id', $id)
16
            ->getQuery();
17
        return $query->execute();
18
    }
19
    public function getEnrolled($enroller, $limit, $currentPage)
20
    {
21
        if (!$currentPage) {
22
            $currentPage = 1;
23
        }
24
        $qb = $this->createQueryBuilder('c')
25
            ->where('c.enroller = :enroller')
26
            ->setParameter('enroller', $enroller);
27
28
        $count = $this->createQueryBuilder('c')
29
            ->select('COUNT(c)')
30
            ->where('c.enroller = :enroller')
31
            ->setParameter('enroller', $enroller)
32
            ->getQuery()->getSingleScalarResult();
33
34
        $maxPages = ceil($count/$limit);
35
        if ($maxPages == 0) {
36
            $maxPages = 1;
37
        }
38
        if ($maxPages < $currentPage) {
39
            $currentPage = $maxPages;
40
        }
41
42
        $paginated = $this->paginate(
43
            $qb,
44
            $limit,
45
            $currentPage
46
        );
47
        return $paginated;
48
    }
49
50
    public function clearEnrolled($enroller)
51
    {
52
        $qb = $this->createQueryBuilder('c');
53
        $qb->where('c.enroller = :enroller')
54
            ->setParameter('enroller', $enroller)
55
            ->update(['c.enroller' => null])
0 ignored issues
show
Bug introduced by
array('c.enroller' => null) of type array<string,null> is incompatible with the type string expected by parameter $update of Doctrine\ORM\QueryBuilder::update(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

55
            ->update(/** @scrutinizer ignore-type */ ['c.enroller' => null])
Loading history...
56
            ->getQuery()->execute();
57
    }
58
59
    private function paginate($dql, $limit, $page)
60
    {
61
        $paginated = new Paginator($dql);
62
63
        $paginated->getQuery()
64
            ->setFirstResult($limit * ($page - 1))
65
            ->setMaxResults($limit);
66
67
        return $paginated;
68
    }
69
70
    public function getAllWaitingForInvite() {
71
        $query = $this->createQueryBuilder('n')
72
            ->where('n.dateToSendInvite IS NOT NULL')
73
            ->getQuery();
74
75
        $orders = $query->execute();
76
77
        if (sizeof($orders) == 0) {
78
            return null;
79
        }
80
81
        return $orders;
82
    }
83
    public function getCustomersWithoutId($id) {
84
        $query = $this->createQueryBuilder('n')
85
            ->where("n.id <> $id");
86
        return $query;
87
    }
88
89
}
90