SearchTextFilterConditionTransformer   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 40
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 0
Metric Value
wmc 7
lcom 1
cbo 4
dl 0
loc 40
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
C transform() 0 31 7
1
<?php
2
namespace Netdudes\DataSourceryBundle\Query;
3
4
use Netdudes\DataSourceryBundle\DataSource\Configuration\Field;
5
6
class SearchTextFilterConditionTransformer
7
{
8
    /**
9
     * @param FilterCondition $filterCondition
10
     * @param Field[]         $dataSourceFields
11
     *
12
     * @return Filter
13
     */
14
    public function transform(FilterCondition $filterCondition, array $dataSourceFields)
15
    {
16
        $filter = new Filter();
17
        $filter->setConditionType(Filter::CONDITION_TYPE_OR);
18
19
        if (empty($dataSourceFields)) {
20
            return $filter;
21
        }
22
23
        $method = $filterCondition->getMethod();
24
        $searchTerm = $filterCondition->getValue();
25
        if ($method === FilterCondition::METHOD_STRING_LIKE) {
26
            $searchTerm = "%$searchTerm%";
27
        }
28
29
        foreach ($dataSourceFields as $dataSourceField) {
30
            if (!$dataSourceField->getDataType()->supports($method)) {
31
                continue;
32
            }
33
            if (!$dataSourceField->getDatabaseFilterQueryField()) {
34
                continue;
35
            }
36
            if (is_array($dataSourceField->getDatabaseSelectAlias())) {
37
                continue;
38
            }
39
40
            $filter[] = new FilterCondition($dataSourceField->getUniqueName(), $method, $searchTerm, $searchTerm);
41
        }
42
43
        return $filter;
44
    }
45
}
46