Passed
Push — master ( 4a884d...c9d1fc )
by Jeff
12:14
created

RoleController   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 98
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 7
eloc 27
dl 0
loc 98
c 0
b 0
f 0
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A update() 0 13 2
A edit() 0 12 1
A create() 0 3 1
A __construct() 0 6 1
A store() 0 6 1
A index() 0 7 1
1
<?php
2
3
namespace App\Http\Controllers\Admin\Roles;
4
5
use App\Http\Controllers\Controller;
6
use App\Shop\Permissions\Repositories\Interfaces\PermissionRepositoryInterface;
7
use App\Shop\Roles\Repositories\RoleRepository;
8
use App\Shop\Roles\Repositories\RoleRepositoryInterface;
9
use App\Shop\Roles\Requests\CreateRoleRequest;
10
use App\Shop\Roles\Requests\UpdateRoleRequest;
11
12
class RoleController extends Controller
13
{
14
    /**
15
     * @var RoleRepositoryInterface
16
     */
17
    private $roleRepo;
18
19
    /**
20
     * @var PermissionRepositoryInterface
21
     */
22
    private $permissionRepository;
23
24
    /**
25
     * RoleController constructor.
26
     *
27
     * @param RoleRepositoryInterface $roleRepository
28
     * @param PermissionRepositoryInterface $permissionRepository
29
     */
30
    public function __construct(
31
        RoleRepositoryInterface $roleRepository,
32
        PermissionRepositoryInterface $permissionRepository
33
    ) {
34
        $this->roleRepo = $roleRepository;
35
        $this->permissionRepository = $permissionRepository;
36
    }
37
38
    /**
39
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
40
     */
41
    public function index()
42
    {
43
        $list = $this->roleRepo->listRoles('name', 'asc')->all();
44
45
        $roles = $this->roleRepo->paginateArrayResults($list);
46
47
        return view('admin.roles.list', compact('roles'));
48
    }
49
50
    /**
51
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
52
     */
53
    public function create()
54
    {
55
        return view('admin.roles.create');
56
    }
57
58
    /**
59
     * @param CreateRoleRequest $request
60
     *
61
     * @return \Illuminate\Http\RedirectResponse
62
     */
63
    public function store(CreateRoleRequest $request)
64
    {
65
        $this->roleRepo->createRole($request->except('_method', '_token'));
66
67
        return redirect()->route('admin.roles.index')
68
            ->with('message', 'Create role successful!');
69
    }
70
71
    /**
72
     * @param $id
73
     *
74
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
75
     */
76
    public function edit($id)
77
    {
78
        $role = $this->roleRepo->findRoleById($id);
79
80
        $roleRepo = new RoleRepository($role);
81
        $attachedPermissionsArrayIds = $roleRepo->listPermissions()->pluck('id')->all();
82
        $permissions = $this->permissionRepository->listPermissions(['*'], 'name', 'asc');
83
84
        return view('admin.roles.edit', compact(
85
            'role',
86
            'permissions',
87
            'attachedPermissionsArrayIds'
88
        ));
89
    }
90
91
    /**
92
     * @param UpdateRoleRequest $request
93
     * @param $id
94
     *
95
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
96
     */
97
    public function update(UpdateRoleRequest $request, $id)
98
    {
99
        $role = $this->roleRepo->findRoleById($id);
100
101
        if ($request->has('permissions')) {
102
            $roleRepo = new RoleRepository($role);
103
            $roleRepo->syncPermissions($request->input('permissions'));
104
        }
105
106
        $this->roleRepo->updateRole($request->except('_method', '_token'), $id);
107
108
        return redirect()->route('admin.roles.edit', $id)
0 ignored issues
show
Bug Best Practice introduced by
The expression return redirect()->route...date role successful!') returns the type Illuminate\Http\RedirectResponse which is incompatible with the documented return type Illuminate\View\View|Ill...\Contracts\View\Factory.
Loading history...
109
            ->with('message', 'Update role successful!');
110
    }
111
}
112