Passed
Push — feature/optimize ( cf938e...7e8046 )
by Fu
03:43
created

ParseValueTrait::parseSearchDataValue()   A

Complexity

Conditions 6
Paths 6

Size

Total Lines 21
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 6
eloc 17
nc 6
nop 2
dl 0
loc 21
rs 9.0777
c 0
b 0
f 0
1
<?php
2
3
4
namespace Modules\Core\Traits\Criteria;
5
6
trait ParseValueTrait
7
{
8
    /** @var \Illuminate\Http\Request $request */
9
    protected $request;
10
    /** @var \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Model|\Illuminate\Database\Query\Builder $model */
11
    protected $model;
12
    /** @var \Prettus\Repository\Contracts\RepositoryInterface $repository */
13
    protected $repository;
14
    protected $search;
15
    protected $searchData;
16
    protected $searchFields;
17
    protected $isFirstField;
18
    protected $modelForceAndWhere;
19
    protected $fieldsSearchable;
20
    protected $fields;
21
    protected $filter;
22
    protected $orderBy;
23
    protected $sortedBy;
24
    protected $with;
25
    protected $searchJoin;
26
    protected $acceptedConditions;
27
    protected $originalFields;
28
29
    protected function parseValue($condition, $field)
30
    {
31
        $value = null;
32
        $condition = trim(strtolower($condition));
33
34
        if (isset($this->searchData[$field])) {
35
            $value = $this->parseSearchDataValue($this->searchData[$field], $condition);
36
        } elseif (!is_null($this->search)) {
37
            $value = $this->parseSearchDataValue($this->search, $condition);
38
        }
39
40
        return $value;
41
    }
42
43
    protected function parseSearchDataValue($value, $condition)
44
    {
45
        switch ($condition) {
46
            case 'like':
47
                $value = "%{$value}%";
48
                break;
49
            case 'ilike':
50
                $value = "%{$value}%";
51
                break;
52
            case 'in':
53
                $value = explode(',', $value);
54
                break;
55
            case 'between':
56
                $value = explode(',', $value);
57
                break;
58
            case 'cross':
59
                $value = explode(',', $value);
60
                break;
61
        }
62
63
        return $value;
64
    }
65
}