RoleController::store()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 2
c 1
b 0
f 0
dl 0
loc 5
rs 10
cc 1
nc 1
nop 1
1
<?php
2
3
namespace Itstructure\LaRbac\Http\Controllers;
4
5
use Itstructure\LaRbac\Models\{Role, Permission};
6
use Itstructure\LaRbac\Http\Requests\{
7
    StoreRole as StoreRoleRequest,
8
    UpdateRole as UpdateRoleRequest,
9
    Delete as DeleteRoleRequest
10
};
11
use Itstructure\GridView\DataProviders\EloquentDataProvider;
12
13
/**
14
 * Class RoleController
15
 *
16
 * @package Itstructure\LaRbac\Http\Controllers
17
 *
18
 * @author Andrey Girnik <[email protected]>
19
 */
20
class RoleController extends Controller
21
{
22
    /**
23
     * Get list of all roles.
24
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
25
     */
26
    public function index()
27
    {
28
        $dataProvider = new EloquentDataProvider(Role::query()->with('permissions'));
29
30
        return view('rbac::roles.index', compact('dataProvider'));
31
    }
32
33
    /**
34
     * Render page to create new role.
35
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
36
     */
37
    public function create()
38
    {
39
        $allPermissions = Permission::orderBy('id', 'desc')->pluck('name', 'id');
40
41
        return view('rbac::roles.create', compact('allPermissions'));
42
    }
43
44
    /**
45
     * Store new role data.
46
     * @param StoreRoleRequest $request
47
     * @return \Illuminate\Http\RedirectResponse
48
     */
49
    public function store(StoreRoleRequest $request)
50
    {
51
        Role::create($request->all());
52
53
        return redirect()->route('list_roles');
54
    }
55
56
    /**
57
     * Render page to edit current role.
58
     * @param Role $role
59
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
60
     */
61
    public function edit(Role $role)
62
    {
63
        $allPermissions = Permission::orderBy('id', 'desc')->pluck('name', 'id');
64
        $currentPermissions = old('permissions') ?? $role->permissions()->pluck('id')->toArray();
65
66
        return view('rbac::roles.edit', compact('role', 'allPermissions', 'currentPermissions'));
67
    }
68
69
    /**
70
     * Update current role data.
71
     * @param Role $role
72
     * @param UpdateRoleRequest $request
73
     * @return \Illuminate\Http\RedirectResponse
74
     */
75
    public function update(Role $role, UpdateRoleRequest $request)
76
    {
77
        $role->fill($request->all())->save();
78
79
        return redirect()->route('show_role', [
80
            'id' => $role->id
81
        ]);
82
    }
83
84
    /**
85
     * Render page to show current role.
86
     * @param int $id
87
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
88
     */
89
    public function show(int $id)
90
    {
91
        $role = Role::findOrFail($id);
92
93
        return view('rbac::roles.show', compact('role'));
94
    }
95
96
    /**
97
     * Delete current role data.
98
     * @param DeleteRoleRequest $request
99
     * @return \Illuminate\Http\RedirectResponse
100
     */
101
    public function delete(DeleteRoleRequest $request)
102
    {
103
        foreach ($request->items as $item) {
104
105
            if (!is_numeric($item)) {
106
                continue;
107
            }
108
109
            Role::destroy($item);
110
        }
111
112
        return redirect()->route('list_roles');
113
    }
114
}
115