Passed
Push — master ( b1742c...4b0d05 )
by Arthur
101:17 queued 94:42
created

IncludesRelations   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 12
dl 0
loc 38
rs 10
c 0
b 0
f 0
wmc 6

3 Methods

Rating   Name   Duplication   Size   Complexity  
A parseRequestIncludeParameter() 0 8 3
A include() 0 9 2
A compileRelations() 0 3 1
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: arthur
5
 * Date: 04.11.18
6
 * Time: 19:59.
7
 */
8
9
namespace Foundation\Abstracts\Transformers;
10
11
use Illuminate\Database\Eloquent\Model;
12
use Illuminate\Http\Resources\Json\JsonResource;
13
14
/**
15
 * Trait IncludesRelations.
16
 */
17
trait IncludesRelations
18
{
19
20
    /**
21
     * @return array
22
     */
23
    protected function parseRequestIncludeParameter()
24
    {
25
        $request = request();
26
        if (isset($request->include) && is_string($request->include)) {
27
            return explode(',', $request->include);
28
        }
29
30
        return [];
31
    }
32
33
    /**
34
     * @return array
35
     */
36
    public function compileRelations()
37
    {
38
        return array_unique(array_merge($this->include, array_intersect($this->availableIncludes, $this->parseRequestIncludeParameter())));
39
    }
40
41
    /**
42
     * @param $relation
43
     *
44
     * @return $this
45
     */
46
    public function include($relation)
47
    {
48
        if (is_array($relation)) {
49
            $this->include = array_merge($this->include, $relation);
0 ignored issues
show
Bug Best Practice introduced by
The property include does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
50
        } else {
51
            $this->include[] = $relation;
52
        }
53
54
        return $this;
55
    }
56
}
57