Completed
Push — master ( a19a47...15bbc5 )
by Arjay
15:59
created

UsersDataTable   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 98
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 4
Bugs 0 Features 1
Metric Value
dl 0
loc 98
rs 10
c 4
b 0
f 1
wmc 6
lcom 1
cbo 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
B ajax() 0 26 1
A query() 0 18 4
B html() 0 40 1
1
<?php
2
3
namespace Yajra\CMS\DataTables;
4
5
use App\User;
6
use Yajra\Datatables\Services\DataTable;
7
8
class UsersDataTable extends DataTable
9
{
10
    /**
11
     * @return \Illuminate\Http\JsonResponse
12
     */
13
    public function ajax()
14
    {
15
        return $this->datatables
16
            ->eloquent($this->query())
17
            ->editColumn('created_at', function (User $user) {
18
                return $user->created_at->diffForHumans();
19
            })
20
            ->editColumn('email', function (User $user) {
21
                return $this->datatables->getHtmlBuilder()->html->mailto($user->email)->toHtml();
22
            })
23
            ->editColumn('blocked', function (User $user) {
24
                return dt_check($user->blocked);
25
            })
26
            ->editColumn('confirmed', function (User $user) {
27
                return dt_check($user->confirmed);
28
            })
29
            ->editColumn('administrator', function (User $user) {
30
                return dt_check($user->administrator);
31
            })
32
            ->editColumn('roles', function (User $user) {
33
                return dt_render('administrator.users.datatables.roles', compact('user'));
34
            })
35
            ->addColumn('action', 'administrator.users.datatables.action')
36
            ->rawColumns(['email', 'blocked', 'confirmed', 'administrator', 'roles', 'action'])
37
            ->make(true);
38
    }
39
40
    /**
41
     * @return \Illuminate\Database\Eloquent\Builder
42
     */
43
    public function query()
44
    {
45
        $users = User::with('roles');
46
47
        if ($this->datatables->getRequest()->get('deleted') == 'true') {
48
            $users->onlyTrashed();
49
        }
50
51
        if ($status = $this->datatables->getRequest()->get('status')) {
52
            $users->whereIn('confirmed', $status);
53
        }
54
55
        if ($roles = $this->datatables->getRequest()->get('roles')) {
56
            $users->havingRoles($roles);
57
        }
58
59
        return $this->applyScopes($users);
60
    }
61
62
    /**
63
     * @return \Yajra\Datatables\Html\Builder
64
     */
65
    public function html()
66
    {
67
        return $this
68
            ->builder()
69
            ->columns([
70
                'id'            => ['width' => '20px'],
71
                'first_name',
72
                'last_name',
73
                'email',
74
                'roles'         => ['name' => 'roles.name', 'orderable' => false],
75
                'administrator' => [
76
                    'width' => '20px',
77
                    'title' => '<i class="fa fa-shield" data-toggle="tooltip" data-title="' . trans('cms::user.datatable.columns.administrator') . '"></i>',
78
                ],
79
                'confirmed'     => [
80
                    'width' => '20px',
81
                    'title' => '<i class="fa fa-check" data-toggle="tooltip" data-title="' . trans('cms::user.datatable.columns.confirmed') . '"></i>',
82
                ],
83
                'blocked'       => [
84
                    'width' => '20px',
85
                    'title' => '<i class="fa fa-ban" data-toggle="tooltip" data-title="' . trans('cms::user.datatable.columns.blocked') . '"></i>',
86
                ],
87
                'created_at',
88
            ])
89
            ->addAction(['width' => '80px'])
90
            ->parameters([
91
                'stateSave' => true,
92
                'order'     => [[0, 'desc']],
93
                'buttons'   => [
94
                    [
95
                        'extend' => 'create',
96
                        'text'   => '<i class="fa fa-plus"></i>&nbsp;&nbsp;' . trans('cms::user.datatable.buttons.create'),
97
                    ],
98
                    'export',
99
                    'print',
100
                    'reset',
101
                    'reload',
102
                ],
103
            ]);
104
    }
105
}
106