Skip to content

Commit a39e326

Browse files
authored
Merge pull request #344 from dbarzin/dev
Dev
2 parents 3719d9d + 0d4914e commit a39e326

File tree

5 files changed

+194
-6
lines changed

5 files changed

+194
-6
lines changed
Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
1+
<?php
2+
3+
namespace App\Http\Controllers;
4+
5+
use App\Models\Control;
6+
use App\Models\User;
7+
use App\Models\UserGroup;
8+
use Illuminate\Http\Request;
9+
use Illuminate\Http\Response;
10+
use Illuminate\Support\Facades\Auth;
11+
use Maatwebsite\Excel\Facades\Excel;
12+
13+
class UserGroupController extends Controller
14+
{
15+
/**
16+
* Display a listing of the resource.
17+
*
18+
* @return \Illuminate\Http\Response
19+
*/
20+
public function index()
21+
{
22+
// Only for administrator role
23+
abort_if(Auth::User()->role !== 1, Response::HTTP_FORBIDDEN, '403 Forbidden');
24+
25+
$userGroups = UserGroup::orderBy('name')->get();
26+
27+
return view('groups.index')->with('groups', $userGroups);
28+
}
29+
30+
/**
31+
* Show the form for creating a new resource.
32+
*
33+
* @return \Illuminate\Http\Response
34+
*/
35+
public function create()
36+
{
37+
// Only for administrator role
38+
abort_if(Auth::User()->role !== 1, Response::HTTP_FORBIDDEN, '403 Forbidden');
39+
40+
$all_users = User::select('id', 'name')->orderBy('name')->get();
41+
42+
return view('groups.create', compact('all_users'));
43+
}
44+
45+
/**
46+
* Store a newly created resource in storage.
47+
*
48+
* @param \Illuminate\Http\Request $request
49+
*
50+
* @return \Illuminate\Http\Response
51+
*/
52+
public function store(Request $request)
53+
{
54+
// Only for administrator role
55+
abort_if(Auth::User()->role !== 1, Response::HTTP_FORBIDDEN, '403 Forbidden');
56+
57+
// Validate request data
58+
$this->validate($request, [
59+
'name' => 'required|min:1|max:90',
60+
]);
61+
62+
// Create and save the new user
63+
$userGroup = new UserGroup();
64+
$userGroup->name = $request->input('name');
65+
$userGroup->description = $request->input('description');
66+
$userGroup->save();
67+
68+
// Sync users
69+
$userGroup->users()->sync($request->input('users', []));
70+
71+
return redirect('/groups');
72+
}
73+
74+
/**
75+
* Display the specified resource.
76+
*
77+
* @param UserGroup $group
78+
*
79+
* @return \Illuminate\Http\Response
80+
*/
81+
public function show(UserGroup $group)
82+
{
83+
// Only for administrator role
84+
abort_if(Auth::User()->role !== 1, Response::HTTP_FORBIDDEN, '403 Forbidden');
85+
86+
// $group = UserGroup::find($id);
87+
abort_if($group === null, Response::HTTP_NOT_FOUND, '404 Not Found');
88+
89+
return view('groups.show', compact('group'));
90+
}
91+
92+
/**
93+
* Show the form for editing the specified resource.
94+
*
95+
* @param UserGroup $group
96+
*
97+
* @return \Illuminate\Http\Response
98+
*/
99+
public function edit(UserGroup $group)
100+
{
101+
// Only for administrator role
102+
abort_if(Auth::User()->role !== 1, Response::HTTP_FORBIDDEN, '403 Forbidden');
103+
104+
// Get Group
105+
abort_if($group === null, Response::HTTP_NOT_FOUND, '404 Not Found');
106+
107+
// Get Users
108+
$all_users = User::select('id', 'name')->orderBy('name')->get();
109+
110+
// Get Controls
111+
$all_controls = Control::select('id', 'name')->whereNull('realisation_date')->orderBy('name')->get();
112+
113+
return view('groups.edit', compact('group', 'all_users', 'all_controls'));
114+
}
115+
116+
/**
117+
* Update the specified resource in storage.
118+
*
119+
* @param \Illuminate\Http\Request $request
120+
* @param UserGroup $group
121+
*
122+
* @return \Illuminate\Http\Response
123+
*/
124+
public function update(Request $request, UserGroup $group)
125+
{
126+
// Only for administrator role
127+
abort_if(Auth::User()->role !== 1, Response::HTTP_FORBIDDEN, '403 Forbidden');
128+
129+
// Validate request data
130+
$this->validate($request, [
131+
'name' => 'required|min:1|max:90',
132+
]);
133+
134+
// Update user information
135+
$group->name = $request->input('name');
136+
$group->description = $request->input('description');
137+
$group->update();
138+
139+
// Sync users
140+
$group->users()->sync($request->input('users', []));
141+
142+
// Sync controls
143+
$group->controls()->sync($request->input('controls', []));
144+
145+
return redirect('/groups');
146+
}
147+
148+
/**
149+
* Remove the specified resource from storage.
150+
*
151+
* @param UserGroup $group
152+
*
153+
* @return \Illuminate\Http\Response
154+
*/
155+
public function destroy(UserGroup $group)
156+
{
157+
// Only for administrator role
158+
abort_if(Auth::User()->role !== 1, Response::HTTP_FORBIDDEN, '403 Forbidden');
159+
160+
// Remove users from controls
161+
$group->controls()->detach();
162+
163+
// Remove users from group
164+
$group->users()->detach();
165+
166+
// Dete userGroup
167+
$group->delete();
168+
169+
return redirect('/groups');
170+
}
171+
172+
/**
173+
* Export the list of users.
174+
*
175+
* @return \Symfony\Component\HttpFoundation\BinaryFileResponse
176+
*/
177+
public function export()
178+
{
179+
// Only for administrator role
180+
abort_if(Auth::User()->role !== 1, Response::HTTP_FORBIDDEN, '403 Forbidden');
181+
182+
return Excel::download(new UserGroupsExport(), 'groups.xlsx');
183+
}
184+
}

resources/lang/de/cruds.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,8 @@
148148
'show' => 'Domäne',
149149
'index' => 'Liste der Domänen',
150150
'choose' => 'Wähle eine Domäne',
151-
'title' => 'Domänen'
151+
'title' => 'Domänen',
152+
'radar' => 'Ergebnis der Kontrollen nach Domänen',
152153
],
153154
'document' => [
154155
'title' => [

resources/lang/en/cruds.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,9 @@
150150
'show' => 'Domain',
151151
'index' => 'List of domains',
152152
'choose' => 'Choose domain',
153-
'title' => 'Domain'
154-
],
153+
'title' => 'Domain',
154+
'radar' => 'Measurements by domain',
155+
],
155156
'document' => [
156157
'title' => [
157158
'storage' => 'Storage',
@@ -264,7 +265,8 @@
264265
'password' => 'Password',
265266
'email' => 'email',
266267
'language' => 'Language',
267-
'controls' => 'Controls'
268+
'controls' => 'Controls',
269+
'groups' => 'Groups'
268270
],
269271
'roles' => [
270272
'admin' => 'Administrator',

resources/lang/fr/cruds.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,8 @@
150150
'show' => 'Domaine',
151151
'index' => 'Liste des domaines',
152152
'choose' => 'Choisir un domaine',
153-
'title' => 'Domaine'
153+
'title' => 'Domaine',
154+
'radar' => 'Résultat des contrôles par domaine',
154155
],
155156
'document' => [
156157
'title' => [

resources/views/radar/domains.blade.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
@section("content")
44
<form action="/radar/domains">
5-
<div data-role="panel" data-title-caption="Tableau de bord" data-collapsible="true" data-title-icon="<span class=' mif-stacked-bar-chart'></span>">
5+
<div data-role="panel" data-title-caption="{{ trans('cruds.domain.radar') }}" data-collapsible="true" data-title-icon="<span class=' mif-stacked-bar-chart'></span>">
66

77
<div class="row">
88
<div class="cell-md-9">

0 commit comments

Comments
 (0)