Passed
Push — master ( b8147c...403ced )
by Curtis
11:47 queued 05:39
created

TableData::__invoke()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 12
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 7
c 0
b 0
f 0
nc 2
nop 1
dl 0
loc 12
rs 10
1
<?php
2
3
namespace App\Http\Controllers\enso\core\Administration\User;
4
5
use Illuminate\Routing\Controller;
6
use App\Tables\Builders\enso\core\UserTable;
7
use App\Tables\Builders\enso\core\UserTableIndi;
8
use LaravelEnso\Tables\Traits\Data;
9
use Illuminate\Http\Request;
10
use LaravelEnso\Tables\Services\Data\Builders\Data as DataBuilder;
11
use LaravelEnso\Tables\Services\Data\Builders\Meta as MetaBuilder;
12
use Illuminate\Support\Facades\App;
13
use LaravelEnso\Tables\Services\Data\Config;
14
use LaravelEnso\Tables\Services\TemplateLoader;
15
use LaravelEnso\Tables\Services\Data\FilterAggregator;
16
use LaravelEnso\Tables\Services\Data\Request as TableRequest;
17
use App\Traits\ConnectionTrait;
18
19
class TableData extends Controller
20
{
21
    use ConnectionTrait;
22
    
23
    protected $tableClass;
24
25
    public function __invoke(Request $request)
26
    {
27
        $this->tableClass = UserTable::class;
28
        $conn =  $this->getConnection();
29
        if($conn == 'tenant') {
30
            $this->tableClass = UserTableIndi::class;
31
        }
32
33
        ['table' => $table, 'config' => $config] = $this->data($request);
34
35
        return (new DataBuilder($table, $config))->toArray()
36
            + (new MetaBuilder($table, $config))->toArray();
37
    }
38
39
    public function data(Request $request)
40
    {
41
        $request = $this->request($request);
42
        $table = App::make($this->tableClass, ['request' => $request]);
43
        $template = (new TemplateLoader($table))->handle();
44
        $config = new Config($request, $template);
45
46
        return ['table' => $table, 'config' => $config];
47
    }
48
49
    public function request(Request $request)
50
    {
51
        $aggregator = new FilterAggregator(
52
            $request->get('internalFilters'),
53
            $request->get('filters'),
54
            $request->get('intervals'),
55
            $request->get('params')
56
        );
57
58
        return new TableRequest($request->get('columns'), $request->get('meta'), $aggregator);
59
    }
60
}
61