DataSearch::queryCount()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
1
<?php
2
3
namespace hamburgscleanest\DataTables\Models\DataComponents\Search;
4
5
use hamburgscleanest\DataTables\Facades\UrlHelper;
6
use Illuminate\Database\Eloquent\Builder;
7
8
/**
9
 * Class DataSearch
10
 * @package hamburgscleanest\DataTables\Models\DataComponents\Search
11
 */
12
abstract class DataSearch {
13
14
    /** @var array */
15
    protected $_searchableFields;
16
17
    /** @var array */
18
    protected $_searchQueries = [];
19
20
    /**
21
     * DataSearch constructor.
22
     * @param array $searchableFields
23
     */
24 12
    public function __construct(array $searchableFields = [])
25
    {
26 12
        $this->_searchableFields = $searchableFields;
27 12
    }
28
29
    /**
30
     * @param string $field
31
     * @return DataSearch
32
     */
33 1
    public function addField(string $field) : DataSearch
34
    {
35 1
        $this->_searchableFields[] = $field;
36
37 1
        return $this;
38
    }
39
40
    /**
41
     * @param string $query
42
     * @return DataSearch
43
     */
44 8
    public function addQuery(string $query) : DataSearch
45
    {
46 8
        $this->_searchQueries[] = $query;
47
48 8
        return $this;
49
    }
50
51
    /**
52
     * @param array $queries
53
     * @return DataSearch
54
     */
55 1
    public function addQueries(array $queries) : DataSearch
56
    {
57 1
        $this->_searchQueries += $queries;
58
59 1
        return $this;
60
    }
61
62
    /**
63
     * @return int
64
     */
65 7
    public function queryCount() : int
66
    {
67 7
        return \count($this->_searchQueries);
68
    }
69
70
    /**
71
     * @param Builder $queryBuilder
72
     * @return Builder
73
     */
74
    public function searchData(Builder $queryBuilder) : Builder
75
    {
76 8
        return $queryBuilder->where(function($query) {
77 8
            foreach ($this->_searchQueries as $value)
78
            {
79 8
                $this->_searchFields($query, $value);
80
            }
81 8
        });
82
    }
83
84
    /**
85
     * @param Builder $queryBuilder
86
     * @param string $value
87
     * @return void
88
     */
89
    abstract protected function _searchFields(Builder $queryBuilder, string $value) : void;
90
91
    /**
92
     * @return string
93
     */
94 1
    public function getSearchUrl() : string
95
    {
96 1
        $parameters = UrlHelper::queryParameters();
0 ignored issues
show
Bug introduced by
The method queryParameters() does not exist on hamburgscleanest\DataTables\Facades\UrlHelper. Since you implemented __callStatic, consider adding a @method annotation. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

96
        /** @scrutinizer ignore-call */ 
97
        $parameters = UrlHelper::queryParameters();
Loading history...
97 1
        $parameters['search'] = \implode(',', $this->_searchQueries);
98
99 1
        return \request()->url() . '?' . \http_build_query($parameters);
100
    }
101
}