ComestibleRepository   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 58
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 6
Bugs 1 Features 0
Metric Value
wmc 6
lcom 1
cbo 5
dl 0
loc 58
c 6
b 1
f 0
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getQueryBuilderForFilterForm() 0 16 3
A searchComestibleOfUser() 0 8 1
A searchComestibleOfUserQb() 0 15 2
1
<?php
2
3
namespace Dominikzogg\EnergyCalculator\Repository;
4
5
use Doctrine\ORM\QueryBuilder;
6
use Dominikzogg\EnergyCalculator\Entity\Comestible;
7
use Dominikzogg\EnergyCalculator\Entity\User;
8
9
class ComestibleRepository extends AbstractRepository
10
{
11
    /**
12
     * @param  array        $filterData
13
     * @return QueryBuilder
14
     */
15
    public function getQueryBuilderForFilterForm(array $filterData = array())
16
    {
17
        $qb = $this->createQueryBuilder('c');
18
19
        if (isset($filterData['user'])) {
20
            $this->addEqualFilter($qb, 'c', 'user', $filterData['user']);
21
        }
22
23
        if (isset($filterData['name'])) {
24
            $this->addLikeFilter($qb, 'c', 'name', $filterData['name']);
25
        }
26
27
        $qb->addOrderBy('c.name', 'ASC');
28
29
        return $qb;
30
    }
31
32
    /**
33
     * @param  User         $user
34
     * @param  string|null  $search
35
     * @return Comestible[]
36
     */
37
    public function searchComestibleOfUser(User $user, $search = null)
38
    {
39
        return $this
40
            ->searchComestibleOfUserQb($user, $search)
41
            ->getQuery()
42
            ->getResult()
43
        ;
44
    }
45
46
    /**
47
     * @param  User         $user
48
     * @param  string|null  $search
49
     * @return QueryBuilder
50
     */
51
    public function searchComestibleOfUserQb(User $user, $search = null)
52
    {
53
        $qb = $this->createQueryBuilder('c');
54
        $qb->where($qb->expr()->eq('c.user', ':user'));
55
        $qb->setParameter('user', $user->getId());
56
57
        if (null !== $search) {
58
            $qb->andWhere($qb->expr()->like('c.name', ':name'));
59
            $qb->setParameter('name', '%'.$search.'%');
60
        }
61
62
        $qb->orderBy('c.name');
63
64
        return $qb;
65
    }
66
}
67