Completed
Push — master ( b48036...d573bb )
by Arjay
13:39
created

UsersDataTable::ajax()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 25
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
cc 1
eloc 17
c 1
b 1
f 0
nc 1
nop 0
dl 0
loc 25
rs 8.8571
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
            ->make(true);
37
    }
38
39
    /**
40
     * @return \Illuminate\Database\Eloquent\Builder
41
     */
42
    public function query()
43
    {
44
        $users = User::query();
45
46
        if ($this->datatables->request->get('deleted') == 'true') {
47
            $users->onlyTrashed();
48
        }
49
50
        if ($status = $this->datatables->request->get('status')) {
51
            $users->whereIn('confirmed', $status);
52
        }
53
54
        if ($roles = $this->datatables->request->get('roles')) {
55
            $users->havingRoles($roles);
56
        }
57
58
        return $this->applyScopes($users);
59
    }
60
61
    /**
62
     * @return \Yajra\Datatables\Html\Builder
63
     */
64
    public function html()
65
    {
66
        return $this
67
            ->builder()
68
            ->columns([
69
                'id'            => ['width' => '20px'],
70
                'first_name',
71
                'last_name',
72
                'email',
73
                'roles'         => ['searchable' => false, 'orderable' => false],
74
                'administrator' => [
75
                    'width' => '20px',
76
                    'title' => '<i class="fa fa-shield" data-toggle="tooltip" data-title="IsAdministrator"></i>',
77
                ],
78
                'confirmed'     => [
79
                    'width' => '20px',
80
                    'title' => '<i class="fa fa-check" data-toggle="tooltip" data-title="IsActivated"></i>',
81
                ],
82
                'blocked'       => [
83
                    'width' => '20px',
84
                    'title' => '<i class="fa fa-ban" data-toggle="tooltip" data-title="IsBlocked"></i>',
85
                ],
86
                'created_at',
87
            ])
88
            ->addAction(['width' => '80px'])
89
            ->parameters([
90
                'stateSave' => true,
91
                'order'     => [[0, 'desc']],
92
                'buttons'   => [
93
                    [
94
                        'extend' => 'create',
95
                        'text'   => '<i class="fa fa-plus"></i>&nbsp;&nbsp;New User',
96
                    ],
97
                    'export',
98
                    'print',
99
                    'reset',
100
                    'reload',
101
                ],
102
            ]);
103
    }
104
}
105