RoleDataTable   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 54
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 0
Metric Value
dl 0
loc 54
rs 10
c 0
b 0
f 0
wmc 3
lcom 1
cbo 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A dataTable() 0 10 1
A query() 0 4 1
A getColumns() 0 16 1
1
<?php
2
3
namespace Microboard\DataTables;
4
5
use Illuminate\Database\Eloquent\Builder;
6
use Microboard\Models\Role;
7
use Microboard\Traits\DataTable as MicroboardDataTable;
8
use Yajra\DataTables\DataTableAbstract;
9
use Yajra\DataTables\Html\Column;
10
use Yajra\DataTables\Services\DataTable;
11
12
class RoleDataTable extends DataTable
13
{
14
    use MicroboardDataTable;
15
16
    /**
17
     * Build DataTable class.
18
     *
19
     * @param $query
20
     * @return DataTableAbstract
21
     */
22
    public function dataTable($query)
23
    {
24
        return $this->build($query)
25
            ->editColumn('users', function (Role $role) {
26
                return $role->users_count;
27
            })
28
            ->editColumn('permissions', function (Role $role) {
29
                return $role->permissions_count;
30
            });
31
    }
32
33
    /**
34
     * Get query source of dataTable.
35
     *
36
     * @param Role $model
37
     * @return Builder
38
     */
39
    public function query(Role $model)
40
    {
41
        return $model->newQuery()->withCount(['users', 'permissions']);
42
    }
43
44
    /**
45
     * Get columns.
46
     *
47
     * @return array
48
     */
49
    protected function getColumns()
50
    {
51
        return [
52
            Column::make('id')->title(trans('microboard::roles.fields.id'))->width('1%'),
53
            Column::make('display_name')->title(trans('microboard::roles.fields.display_name')),
54
            Column::make('users')->title(trans('microboard::roles.fields.users'))
55
                ->searchable(false),
56
            Column::make('permissions')->title(trans('microboard::roles.fields.permissionsCount'))
57
                ->searchable(false),
58
            Column::computed('action', '')
59
                ->exportable(false)
60
                ->printable(false)
61
                ->width('1%')
62
                ->addClass('text-right')
63
        ];
64
    }
65
}
66