ParseValueTrait   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 59
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 43
c 1
b 0
f 0
dl 0
loc 59
rs 10
wmc 9

2 Methods

Rating   Name   Duplication   Size   Complexity  
A parseValue() 0 12 3
A parseSearchDataValue() 0 21 6
1
<?php
2
3
namespace Modules\Core\Traits\Criteria;
4
5
trait ParseValueTrait
6
{
7
    /** @var \Illuminate\Http\Request $request */
8
    protected $request;
9
    /** @var \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Model|\Illuminate\Database\Query\Builder $model */
10
    protected $model;
11
    /** @var \Prettus\Repository\Contracts\RepositoryInterface $repository */
12
    protected $repository;
13
    protected $search;
14
    protected $searchData;
15
    protected $searchFields;
16
    protected $isFirstField;
17
    protected $modelForceAndWhere;
18
    protected $fieldsSearchable;
19
    protected $fields;
20
    protected $filter;
21
    protected $orderBy;
22
    protected $sortedBy;
23
    protected $with;
24
    protected $searchJoin;
25
    protected $acceptedConditions;
26
    protected $originalFields;
27
    protected $searchClosures;
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
}
66