Code Duplication    Length = 51-51 lines in 2 locations

src/Kunstmaan/AdminListBundle/AdminList/FilterType/DBAL/DateTimeFilterType.php 1 location

@@ 11-61 (lines=51) @@
8
/**
9
 * DateTimeFilterType
10
 */
11
class DateTimeFilterType extends AbstractDBALFilterType
12
{
13
    /**
14
     * @param Request $request  The request
15
     * @param array   &$data    The data
16
     * @param string  $uniqueId The unique identifier
17
     */
18
    public function bindRequest(Request $request, array &$data, $uniqueId)
19
    {
20
        $data['comparator'] = $request->query->get('filter_comparator_' . $uniqueId);
21
        $data['value'] = $request->query->get('filter_value_' . $uniqueId);
22
    }
23
24
    /**
25
     * @param array  $data     The data
26
     * @param string $uniqueId The unique identifier
27
     */
28
    public function apply(array $data, $uniqueId)
29
    {
30
        if (isset($data['value'], $data['comparator'])) {
31
            /** @var DateTime $datetime */
32
            $date = empty($data['value']['date']) ? date('d/m/Y') : $data['value']['date'];
33
            $time = empty($data['value']['time']) ? date('H:i') : $data['value']['time'];
34
            $dateTime = DateTime::createFromFormat('d/m/Y H:i', $date . ' ' . $time);
35
36
            if (false === $dateTime) {
37
                // Failed to create DateTime object.
38
                return;
39
            }
40
            switch ($data['comparator']) {
41
                case 'before':
42
                    $this->queryBuilder->andWhere($this->queryBuilder->expr()->lte($this->getAlias() . $this->columnName, ':var_' . $uniqueId));
43
44
                    break;
45
                case 'after':
46
                    $this->queryBuilder->andWhere($this->queryBuilder->expr()->gt($this->getAlias() . $this->columnName, ':var_' . $uniqueId));
47
48
                    break;
49
            }
50
            $this->queryBuilder->setParameter('var_' . $uniqueId, $dateTime->format('Y-m-d H:i'));
51
        }
52
    }
53
54
    /**
55
     * @return string
56
     */
57
    public function getTemplate()
58
    {
59
        return '@KunstmaanAdminList/FilterType/dateTimeFilter.html.twig';
60
    }
61
}
62

src/Kunstmaan/AdminListBundle/AdminList/FilterType/ORM/DateTimeFilterType.php 1 location

@@ 11-61 (lines=51) @@
8
/**
9
 * DateTimeFilterType
10
 */
11
class DateTimeFilterType 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
    public function bindRequest(Request $request, array &$data, $uniqueId)
19
    {
20
        $data['comparator'] = $request->query->get('filter_comparator_' . $uniqueId);
21
        $data['value'] = $request->query->get('filter_value_' . $uniqueId);
22
    }
23
24
    /**
25
     * @param array  $data     The data
26
     * @param string $uniqueId The unique identifier
27
     */
28
    public function apply(array $data, $uniqueId)
29
    {
30
        if (isset($data['value'], $data['comparator'])) {
31
            /** @var DateTime $datetime */
32
            $date = empty($data['value']['date']) ? date('d/m/Y') : $data['value']['date'];
33
            $time = empty($data['value']['time']) ? date('H:i') : $data['value']['time'];
34
            $dateTime = DateTime::createFromFormat('d/m/Y H:i', $date . ' ' . $time);
35
36
            if (false === $dateTime) {
37
                // Failed to create DateTime object.
38
                return;
39
            }
40
            switch ($data['comparator']) {
41
                case 'before':
42
                    $this->queryBuilder->andWhere($this->queryBuilder->expr()->lte($this->getAlias() . $this->columnName, ':var_' . $uniqueId));
43
44
                    break;
45
                case 'after':
46
                    $this->queryBuilder->andWhere($this->queryBuilder->expr()->gt($this->getAlias() . $this->columnName, ':var_' . $uniqueId));
47
48
                    break;
49
            }
50
            $this->queryBuilder->setParameter('var_' . $uniqueId, $dateTime->format('Y-m-d H:i'));
51
        }
52
    }
53
54
    /**
55
     * @return string
56
     */
57
    public function getTemplate()
58
    {
59
        return '@KunstmaanAdminList/FilterType/dateTimeFilter.html.twig';
60
    }
61
}
62