Completed
Pull Request — master (#25)
by
unknown
03:51
created

SentEmailRepository::search()   B

Complexity

Conditions 4
Paths 4

Size

Total Lines 29
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 20

Importance

Changes 0
Metric Value
dl 0
loc 29
rs 8.5806
c 0
b 0
f 0
ccs 0
cts 17
cp 0
cc 4
eloc 17
nc 4
nop 1
crap 20
1
<?php
2
3
namespace Azine\EmailBundle\Entity\Repositories;
4
5
use Doctrine\ORM\EntityRepository;
6
use Doctrine\ORM\QueryBuilder;
7
8
/**
9
 * SentEmailRepository
10
 *
11
 * This class was generated by the Doctrine ORM. Add your own custom
12
 * repository methods below.
13
 */
14
class SentEmailRepository extends EntityRepository
15
{
16
    public function search($searchParams = [])
17
    {
18
        $queryBuilder = $this->createQueryBuilder('e');
19
20
        if (empty($searchParams)) {
21
            return $queryBuilder;
22
        }
23
24
        $searchAttributes = [
25
            'recipients',
26
            'template',
27
            'sent',
28
            'variables',
29
            'token'
30
        ];
31
32
        foreach ($searchAttributes as $attribute) {
33
            if (empty($searchParams[$attribute])) {
34
                continue;
35
            }
36
37
            $attributeValue = $searchParams[$attribute];
38
39
            $queryBuilder->andWhere('e.'.$attribute.' LIKE :'.$attribute)
40
                ->setParameter(':'.$attribute, '%'.$attributeValue.'%');
41
        }
42
43
        return $queryBuilder;
44
    }
45
46
    public function getTotalCount(QueryBuilder $queryBuilder)
47
    {
48
        $queryBuilder = clone $queryBuilder;
49
50
        return $queryBuilder->select(
51
            'COUNT(e)'
52
        )->getQuery()->getSingleScalarResult();
53
    }
54
}
55