Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
50.00% covered (warning)
50.00%
3 / 6
CRAP
77.50% covered (success)
77.50%
31 / 40
GroupController
0.00% covered (danger)
0.00%
0 / 1
50.00% covered (warning)
50.00%
3 / 6
17.56
77.50% covered (success)
77.50%
31 / 40
 __construct
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 index
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 store
0.00% covered (danger)
0.00%
0 / 1
4.20
76.92% covered (success)
76.92%
10 / 13
 show
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 update
0.00% covered (danger)
0.00%
0 / 1
6.29
80.00% covered (success)
80.00%
12 / 15
 destroy
0.00% covered (danger)
0.00%
0 / 1
2.31
57.14% covered (warning)
57.14%
4 / 7
1<?php
2
3namespace Qmp\Laravel\Acls\Controllers;
4
5use App\Http\Controllers\Controller;
6use Illuminate\Http\Response;
7use Illuminate\Support\Facades\Log;
8use Qmp\Laravel\Acls\Models\RoleGroup;
9use Qmp\Laravel\Acls\Facades\Role;
10use Illuminate\Http\Request;
11use Qmp\Laravel\MicroService\Controllers\AbstractMicroServiceController;
12
13class GroupController extends AbstractMicroServiceController
14{
15    public function __construct(Request $request)
16    {
17        parent::__construct($request);
18    }
19
20    /**
21     * Display a listing of the resource.
22     *
23     * @return \Illuminate\Http\Response
24     */
25    public function index()
26    {
27        $groups = RoleGroup::with('roles')->paginate();
28        return response()->json($groups);
29    }
30
31    /**
32     * Store a newly created resource in storage.
33     *
34     * @param  \Illuminate\Http\Request  $request
35     * @return \Illuminate\Http\Response
36     */
37    public function store(Request $request)
38    {
39        $request->validate([
40            'name' => 'required|max:255',
41            'description' => 'required|max:255',
42            'roles' => 'nullable|array',
43        ]);
44
45        try {
46            $group = new RoleGroup();
47            $group->name = $request->name;
48            $group->description = $request->description;
49            $group->save();
50
51            $roles = $request->roles;
52            if (!empty($roles) && is_array($roles)) {
53                $group->roles()->attach($roles);
54            }
55        } catch(\Exception $e) {
56            Log::debug('Unable to store entity:' . var_export(['message' => $e->getMessage(), 'line' => $e->getLine(), 'file' => $e->getFile()], true));
57            return response()->json(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
58        }
59
60        return response(['status' => 'ok', 'group' => $group->id], Response::HTTP_CREATED);
61    }
62
63    /**
64     * Display the specified resource.
65     *
66     * @return \Illuminate\Http\Response
67     */
68    public function show($roleGroupId)
69    {
70        return response(RoleGroup::where('id', $roleGroupId)->with('roles')->first());
71    }
72
73    /**
74     * Update the specified resource in storage.
75     *
76     * @param  \Illuminate\Http\Request  $request
77     * @param  \Qmp\Laravel\Acls\Models\RoleGroup  $roleGroup
78     * @return \Illuminate\Http\Response
79     */
80    public function update(Request $request, $roleGroupId)
81    {
82        $request->validate([
83            'name' => 'nullable|max:255',
84            'description' => 'nullable|max:255',
85            'roles' => 'nullable|array',
86        ]);
87
88        $roleGroup = RoleGroup::findOrFail($roleGroupId);
89
90        try {
91            if ($request->name) {
92                $roleGroup->name = $request->name;
93            }
94
95            if ($request->description) {
96                $roleGroup->description = $request->description;
97            }
98
99            $roleGroup->save();
100
101            $roles = $request->roles;
102            if (!empty($roles) && is_array($roles)) {
103                $roleGroup->roles()->saveMany($roles);
104            }
105
106        } catch (\Exception $e) {
107            Log::debug('Unable to update entity:' . var_export(['message' => $e->getMessage(), 'line' => $e->getLine(), 'file' => $e->getFile()], true));
108            return response()->json(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
109        }
110
111        return response(['status' => 'ok'], Response::HTTP_OK);
112    }
113
114    /**
115     * Remove the specified resource from storage.
116     *
117     * @param  \Qmp\Laravel\Acls\Models\RoleGroup  $roleGroup
118     * @return \Illuminate\Http\Response
119     */
120    public function destroy($roleGroupId)
121    {
122        try {
123            $roleGroup = RoleGroup::findOrFail($roleGroupId);
124            $roleGroup->roles()->delete();
125            RoleGroup::destroy($roleGroup->id);
126        } catch (\Exception $e) {
127            Log::debug('Unable to destroy entity:' . var_export(['message' => $e->getMessage(), 'line' => $e->getLine(), 'file' => $e->getFile()], true));
128            return response()->json(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
129        }
130
131        return response(['status' => 'ok'], Response::HTTP_OK);
132    }
133}