Completed
Push — develop ( cc9a49...c1329f )
by Abdelrahman
09:49
created

AbilitiesController::logs()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 7
nc 1
nop 2
dl 0
loc 9
rs 9.6666
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Cortex\Fort\Http\Controllers\Adminarea;
6
7
use Illuminate\Http\Request;
8
use Cortex\Fort\Models\Ability;
9
use Illuminate\Foundation\Http\FormRequest;
10
use Cortex\Foundation\DataTables\LogsDataTable;
11
use Cortex\Fort\DataTables\Adminarea\AbilitiesDataTable;
12
use Cortex\Fort\Http\Requests\Adminarea\AbilityFormRequest;
13
use Cortex\Foundation\Http\Controllers\AuthorizedController;
14
15
class AbilitiesController extends AuthorizedController
16
{
17
    /**
18
     * {@inheritdoc}
19
     */
20
    protected $resource = 'ability';
21
22
    /**
23
     * List all abilities.
24
     *
25
     * @param \Cortex\Fort\DataTables\Adminarea\AbilitiesDataTable $abilitiesDataTable
26
     *
27
     * @return \Illuminate\Http\JsonResponse|\Illuminate\View\View
28
     */
29
    public function index(AbilitiesDataTable $abilitiesDataTable)
30
    {
31
        return $abilitiesDataTable->with([
32
            'id' => 'adminarea-abilities-index-table',
33
            'phrase' => trans('cortex/fort::common.abilities'),
34
        ])->render('cortex/foundation::adminarea.pages.datatable');
35
    }
36
37
    /**
38
     * List ability logs.
39
     *
40
     * @param \Cortex\Fort\Models\Ability                 $ability
41
     * @param \Cortex\Foundation\DataTables\LogsDataTable $logsDataTable
42
     *
43
     * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
0 ignored issues
show
Documentation introduced by
Should the return type not be \Illuminate\Http\JsonRes...e|\Illuminate\View\View?

This check compares the return type specified in the @return annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.

Loading history...
44
     */
45
    public function logs(Ability $ability, LogsDataTable $logsDataTable)
46
    {
47
        return $logsDataTable->with([
48
            'resource' => $ability,
49
            'tabs' => 'adminarea.abilities.tabs',
50
            'phrase' => trans('cortex/fort::common.abilities'),
51
            'id' => "adminarea-abilities-{$ability->getKey()}-logs-table",
52
        ])->render('cortex/foundation::adminarea.pages.datatable-logs');
53
    }
54
55
    /**
56
     * Create new ability.
57
     *
58
     * @param \Illuminate\Http\Request $request
59
     * @param \Cortex\Fort\Models\Role $ability
0 ignored issues
show
Documentation introduced by
Consider making the type for parameter $ability a bit more specific; maybe use Ability.
Loading history...
60
     *
61
     * @return \Illuminate\View\View
62
     */
63
    public function create(Request $request, Ability $ability)
64
    {
65
        return $this->form($request, $ability);
66
    }
67
68
    /**
69
     * Edit given ability.
70
     *
71
     * @param \Illuminate\Http\Request $request
72
     * @param \Cortex\Fort\Models\Role $ability
0 ignored issues
show
Documentation introduced by
Consider making the type for parameter $ability a bit more specific; maybe use Ability.
Loading history...
73
     *
74
     * @return \Illuminate\View\View
75
     */
76
    public function edit(Request $request, Ability $ability)
77
    {
78
        return $this->form($request, $ability);
79
    }
80
81
    /**
82
     * Show ability create/edit form.
83
     *
84
     * @param \Illuminate\Http\Request    $request
85
     * @param \Cortex\Fort\Models\Ability $ability
86
     *
87
     * @return \Illuminate\View\View
88
     */
89
    protected function form(Request $request, Ability $ability)
90
    {
91
        $roles = $request->user($this->getGuard())->can('superadmin')
92
            ? app('cortex.fort.role')->all()->pluck('name', 'id')->toArray()
93
            : $request->user($this->getGuard())->roles->pluck('name', 'id')->toArray();
94
95
        return view('cortex/fort::adminarea.pages.ability', compact('ability', 'roles'));
96
    }
97
98
    /**
99
     * Store new ability.
100
     *
101
     * @param \Cortex\Fort\Http\Requests\Adminarea\AbilityFormRequest $request
102
     * @param \Cortex\Fort\Models\Ability                             $ability
103
     *
104
     * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
105
     */
106
    public function store(AbilityFormRequest $request, Ability $ability)
107
    {
108
        return $this->process($request, $ability);
109
    }
110
111
    /**
112
     * Update given ability.
113
     *
114
     * @param \Cortex\Fort\Http\Requests\Adminarea\AbilityFormRequest $request
115
     * @param \Cortex\Fort\Models\Ability                             $ability
116
     *
117
     * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
118
     */
119
    public function update(AbilityFormRequest $request, Ability $ability)
120
    {
121
        return $this->process($request, $ability);
122
    }
123
124
    /**
125
     * Process stored/updated ability.
126
     *
127
     * @param \Illuminate\Foundation\Http\FormRequest $request
128
     * @param \Cortex\Fort\Models\Ability             $ability
129
     *
130
     * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
131
     */
132
    protected function process(FormRequest $request, Ability $ability)
133
    {
134
        // Prepare required input fields
135
        $data = $request->validated();
136
137
        // Save ability
138
        $ability->fill($data)->save();
139
140
        return intend([
141
            'url' => route('adminarea.abilities.index'),
142
            'with' => ['success' => trans('cortex/foundation::messages.resource_saved', ['resource' => 'ability', 'id' => $ability->name])],
0 ignored issues
show
Coding Style introduced by
This line exceeds maximum limit of 120 characters; contains 140 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
143
        ]);
144
    }
145
146
    /**
147
     * Destroy given ability.
148
     *
149
     * @param \Cortex\Fort\Models\Ability $ability
150
     *
151
     * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
152
     */
153
    public function destroy(Ability $ability)
154
    {
155
        $ability->delete();
156
157
        return intend([
158
            'url' => route('adminarea.abilities.index'),
159
            'with' => ['warning' => trans('cortex/foundation::messages.resource_deleted', ['resource' => 'ability', 'id' => $ability->name])],
0 ignored issues
show
Coding Style introduced by
This line exceeds maximum limit of 120 characters; contains 142 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
160
        ]);
161
    }
162
}
163