Completed
Push — develop ( 242664...eb47a8 )
by Abdelrahman
16:40
created

AbilitiesController::import()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 9
rs 9.6666
c 0
b 0
f 0
cc 1
eloc 6
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Cortex\Auth\Http\Controllers\Adminarea;
6
7
use Cortex\Foundation\DataTables\ImportLogsDataTable;
8
use Cortex\Foundation\Http\Requests\ImportFormRequest;
9
use Cortex\Foundation\Importers\DefaultImporter;
10
use Illuminate\Http\Request;
11
use Cortex\Auth\Models\Ability;
12
use Illuminate\Foundation\Http\FormRequest;
13
use Cortex\Foundation\DataTables\LogsDataTable;
14
use Cortex\Auth\DataTables\Adminarea\AbilitiesDataTable;
15
use Cortex\Auth\Http\Requests\Adminarea\AbilityFormRequest;
16
use Cortex\Foundation\Http\Controllers\AuthorizedController;
17
use Cortex\Auth\Http\Requests\Adminarea\AbilityFormProcessRequest;
18
19
class AbilitiesController extends AuthorizedController
20
{
21
    /**
22
     * {@inheritdoc}
23
     */
24
    protected $resource = Ability::class;
25
26
    /**
27
     * List all abilities.
28
     *
29
     * @param \Cortex\Auth\DataTables\Adminarea\AbilitiesDataTable $abilitiesDataTable
30
     *
31
     * @return \Illuminate\Http\JsonResponse|\Illuminate\View\View
32
     */
33
    public function index(AbilitiesDataTable $abilitiesDataTable)
34
    {
35
        return $abilitiesDataTable->with([
36
            'id' => 'adminarea-abilities-index-table',
37
            'phrase' => trans('cortex/auth::common.abilities'),
38
        ])->render('cortex/foundation::adminarea.pages.datatable');
39
    }
40
41
    /**
42
     * List ability logs.
43
     *
44
     * @param \Cortex\Auth\Models\Ability                 $ability
45
     * @param \Cortex\Foundation\DataTables\LogsDataTable $logsDataTable
46
     *
47
     * @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...
48
     */
49
    public function logs(Ability $ability, LogsDataTable $logsDataTable)
50
    {
51
        return $logsDataTable->with([
52
            'resource' => $ability,
53
            'tabs' => 'adminarea.abilities.tabs',
54
            'phrase' => trans('cortex/auth::common.abilities'),
55
            'id' => "adminarea-abilities-{$ability->getKey()}-logs-table",
56
        ])->render('cortex/foundation::adminarea.pages.datatable-logs');
57
    }
58
59
    /**
60
     * Import abilities.
61
     *
62
     * @return \Illuminate\View\View
63
     */
64
    public function import()
65
    {
66
        return view('cortex/foundation::adminarea.pages.import', [
67
            'id' => 'adminarea-abilities-import',
68
            'tabs' => 'adminarea.abilities.tabs',
69
            'url' => route('adminarea.abilities.hoard'),
70
            'phrase' => trans('cortex/auth::common.abilities'),
71
        ]);
72
    }
73
74
    /**
75
     * Hoard abilities.
76
     *
77
     * @param \Cortex\Foundation\Http\Requests\ImportFormRequest $request
78
     * @param \Cortex\Foundation\Importers\DefaultImporter       $importer
79
     *
80
     * @return void
81
     */
82
    public function hoard(ImportFormRequest $request, DefaultImporter $importer)
0 ignored issues
show
Unused Code introduced by
The parameter $request is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
83
    {
84
        // Handle the import
85
        $importer->config['resource'] = $this->resource;
86
        $importer->handleImport();
87
    }
88
89
    /**
90
     * List ability import logs.
91
     *
92
     * @param \Cortex\Foundation\DataTables\ImportLogsDataTable $importLogsDatatable
93
     *
94
     * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
95
     */
96
    public function importLogs(ImportLogsDataTable $importLogsDatatable)
97
    {
98
        return $importLogsDatatable->with([
99
            'resource' => 'ability',
100
            'tabs' => 'adminarea.abilities.tabs',
101
            'id' => 'adminarea-abilities-import-logs-table',
102
            'phrase' => trans('cortex/abilities::common.abilities'),
103
        ])->render('cortex/foundation::adminarea.pages.datatable-import-logs');
104
    }
105
106
    /**
107
     * Create new ability.
108
     *
109
     * @param \Illuminate\Http\Request $request
110
     * @param \Cortex\Auth\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...
111
     *
112
     * @return \Illuminate\View\View
113
     */
114
    public function create(Request $request, Ability $ability)
115
    {
116
        return $this->form($request, $ability);
117
    }
118
119
    /**
120
     * Edit given ability.
121
     *
122
     * @param \Cortex\Auth\Http\Requests\Adminarea\AbilityFormRequest $request
123
     * @param \Cortex\Auth\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...
124
     *
125
     * @return \Illuminate\View\View
126
     */
127
    public function edit(AbilityFormRequest $request, Ability $ability)
128
    {
129
        return $this->form($request, $ability);
130
    }
131
132
    /**
133
     * Show ability create/edit form.
134
     *
135
     * @param \Illuminate\Http\Request    $request
136
     * @param \Cortex\Auth\Models\Ability $ability
137
     *
138
     * @return \Illuminate\View\View
139
     */
140
    protected function form(Request $request, Ability $ability)
141
    {
142
        $roles = $request->user($this->getGuard())->can('superadmin')
143
            ? app('cortex.auth.role')->all()->pluck('name', 'id')->toArray()
144
            : $request->user($this->getGuard())->roles->pluck('name', 'id')->toArray();
145
146
        $entityTypes = app('cortex.auth.ability')->distinct()->get(['entity_type'])->pluck('entity_type', 'entity_type')->toArray();
0 ignored issues
show
Coding Style introduced by
This line exceeds maximum limit of 120 characters; contains 132 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...
147
148
        asort($roles);
149
150
        return view('cortex/auth::adminarea.pages.ability', compact('ability', 'roles', 'entityTypes'));
151
    }
152
153
    /**
154
     * Store new ability.
155
     *
156
     * @param \Cortex\Auth\Http\Requests\Adminarea\AbilityFormProcessRequest $request
157
     * @param \Cortex\Auth\Models\Ability                                    $ability
158
     *
159
     * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
160
     */
161
    public function store(AbilityFormProcessRequest $request, Ability $ability)
162
    {
163
        return $this->process($request, $ability);
164
    }
165
166
    /**
167
     * Update given ability.
168
     *
169
     * @param \Cortex\Auth\Http\Requests\Adminarea\AbilityFormProcessRequest $request
170
     * @param \Cortex\Auth\Models\Ability                                    $ability
171
     *
172
     * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
173
     */
174
    public function update(AbilityFormProcessRequest $request, Ability $ability)
175
    {
176
        return $this->process($request, $ability);
177
    }
178
179
    /**
180
     * Process stored/updated ability.
181
     *
182
     * @param \Illuminate\Foundation\Http\FormRequest $request
183
     * @param \Cortex\Auth\Models\Ability             $ability
184
     *
185
     * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
186
     */
187
    protected function process(FormRequest $request, Ability $ability)
188
    {
189
        // Prepare required input fields
190
        $data = $request->validated();
191
192
        // Save ability
193
        $ability->fill($data)->save();
194
195
        return intend([
196
            'url' => route('adminarea.abilities.index'),
197
            '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...
198
        ]);
199
    }
200
201
    /**
202
     * Destroy given ability.
203
     *
204
     * @param \Cortex\Auth\Models\Ability $ability
205
     *
206
     * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
207
     */
208
    public function destroy(Ability $ability)
209
    {
210
        $ability->delete();
211
212
        return intend([
213
            'url' => route('adminarea.abilities.index'),
214
            '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...
215
        ]);
216
    }
217
}
218