Completed
Push — master ( ac2ac0...5540a6 )
by Arjay
02:04 queued 10s
created

ApiResourceDataTable::canCreate()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Yajra\DataTables;
4
5
use Illuminate\Support\Collection;
6
use Illuminate\Pagination\LengthAwarePaginator;
7
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
8
9
class ApiResourceDataTable extends CollectionDataTable
10
{
11
    /**
12
     * Collection object.
13
     *
14
     * @var \Illuminate\Http\Resources\Json\AnonymousResourceCollection
15
     */
16
    public $collection;
17
18
    /**
19
     * Collection object.
20
     *
21
     * @var \Illuminate\Http\Resources\Json\AnonymousResourceCollection
22
     */
23
    public $original;
24
25
    /**
26
     * Can the DataTable engine be created with these parameters.
27
     *
28
     * @param mixed $source
29
     * @return bool
30
     */
31
    public static function canCreate($source)
32
    {
33
        return $source instanceof AnonymousResourceCollection;
34
    }
35
36
    /**
37
     * Factory method, create and return an instance for the DataTable engine.
38
     *
39
     * @param \Illuminate\Http\Resources\Json\AnonymousResourceCollection $source
40
     * @return ApiResourceDataTable|DataTableAbstract
41
     */
42
    public static function create($source)
43
    {
44
        return parent::create($source);
45
    }
46
47
    /**
48
     * CollectionEngine constructor.
49
     *
50
     * @param \Illuminate\Http\Resources\Json\AnonymousResourceCollection $collection
51
     */
52
    public function __construct(AnonymousResourceCollection $collection)
53
    {
54
        $this->request    = app('datatables.request');
55
        $this->config     = app('datatables.config');
56
        $this->collection = collect($collection->toArray($this->request));
57
        $this->original   = $collection;
58
        $this->columns    = array_keys($this->serialize(collect($collection->toArray($this->request))->first()));
59
        if ($collection->resource instanceof LengthAwarePaginator) {
60
            $this->isFilterApplied = true;
61
        }
62
    }
63
}
64