Completed
Push — master ( a2c5ce...b3c15f )
by Ruud
328:10 queued 318:03
created

DateFilterType   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 7
lcom 1
cbo 5
dl 0
loc 51
ccs 21
cts 21
cp 1
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A bindRequest() 0 5 1
A apply() 0 25 5
A getTemplate() 0 4 1
1
<?php
2
3
namespace Kunstmaan\AdminListBundle\AdminList\FilterType\ORM;
4
5
use DateTime;
6
use Symfony\Component\HttpFoundation\Request;
7
8
/**
9
 * DateFilterType
10
 */
11
class DateFilterType extends AbstractORMFilterType
12
{
13
    /**
14
     * @param Request $request  The request
15
     * @param array   &$data    The data
16
     * @param string  $uniqueId The unique identifier
17
     */
18 1
    public function bindRequest(Request $request, array &$data, $uniqueId)
19
    {
20 1
        $data['comparator'] = $request->query->get('filter_comparator_' . $uniqueId);
21 1
        $data['value'] = $request->query->get('filter_value_' . $uniqueId);
22 1
    }
23
24
    /**
25
     * @param array  $data     The data
26
     * @param string $uniqueId The unique identifier
27
     */
28 3
    public function apply(array $data, $uniqueId)
29
    {
30 3
        if (isset($data['value'], $data['comparator'])) {
31 3
            $dateTime = DateTime::createFromFormat('d/m/Y', $data['value']);
32
33 3
            if (false === $dateTime) {
34
                // Failed to create DateTime object.
35 1
                return;
36
            }
37
38 2
            $date = $dateTime->format('Y-m-d');
39
40 2
            switch ($data['comparator']) {
41 2
                case 'before':
42 1
                    $this->queryBuilder->andWhere($this->queryBuilder->expr()->lte($this->getAlias() . $this->columnName, ':var_' . $uniqueId));
43
44 1
                    break;
45 1
                case 'after':
46 1
                    $this->queryBuilder->andWhere($this->queryBuilder->expr()->gt($this->getAlias() . $this->columnName, ':var_' . $uniqueId));
47
48 1
                    break;
49
            }
50 2
            $this->queryBuilder->setParameter('var_' . $uniqueId, $date);
51
        }
52 2
    }
53
54
    /**
55
     * @return string
56
     */
57 1
    public function getTemplate()
58
    {
59 1
        return 'KunstmaanAdminListBundle:FilterType:dateFilter.html.twig';
60
    }
61
}
62