/
GroupsController.php
106 lines (86 loc) · 3.42 KB
/
GroupsController.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?php namespace App\Http\Controllers;
use App\Http\Requests\CreateGroupRequest;
use App\Http\Requests\UpdateGroupRequest;
use App\Http\Requests\UpdateGroupRolesRequest;
use App\Models\GroupType;
use App\Models\Group;
use App\Models\Role;
use Request;
use Form;
use Auth;
use DB;
class GroupsController extends BaseController {
public function index() {
if (Auth::user()->can('read-all-group')) {
$data['groups'] = self::API()->all(Request::input());
$data['title'] = "Groups";
$data['active_search'] = implode(",",['display_name','name','description']);
$data['menu_actions'] = [Form::addItem(route('groups.create'), 'Create new group',Auth::user()->can('create-group'))];
return Request::ajax() ? view('groups/groups',$data) : view('groups/index',$data);
}
else return redirect()->back()->withErrors(['Access denied to groups index page']);
}
public function show($id) {
if (Auth::user()->can('read-group')) {
$data['group'] = Group::find($id);
$data['title'] = "Group \"".$data['group']->display_name."\"";
$roles = Role::get();
$roles_in_group = Role::whereHas('groups', function($q) use ($id) {
$q->where('groups.id', $id);
})->get();
$counter = 0;
foreach ($roles as $role) {
$is_in_group = false;
foreach($roles_in_group as $role_in_group) {
if ($role->id == $role_in_group->id) {
$is_in_group = true;
}
}
$data['roles'][$counter] = $role;
$data['roles'][$counter]['is_in_group'] = $is_in_group;
$counter++;
}
$data['menu_actions'] = [Form::editItem(route('groups.edit',$id),'Edit This Group',Auth::user()->can('update-group'))];
return view('groups/show',$data);
}
else return redirect()->back()->withErrors(['Access denied to groups show page']);
}
public function edit($id) {
if (Auth::user()->can('update-group')) {
$data['group'] = Group::find($id);
$data['group_types'] = GroupType::orderBy("name")->get();
$data['title'] = "Update Group \"".$data['group']->display_name."\"";
return view('groups/edit',$data);
}
else return redirect()->back()->withErrors(['Access denied to groups edit page']);
}
public function update($id, UpdateGroupRequest $request) {
$group = Group::find($id);
$group->update($request->all());
return redirect()->route('groups.show',$id)->with('successes',['Group updated successfully']);;
}
public function create() {
if (Auth::user()->can('create-group')) {
$data['title'] = "Create Group";
$data['group_types'] = GroupType::orderBy("name")->get();
return view('groups/create',$data);
}
else return redirect()->back()->withErrors(['Access denied to groups create page']);
}
public function store(CreateGroupRequest $request) {
$groupType = Group::create($request->all());
return redirect()->route('groups.index')->with('successes',['Group created successfully']);;
}
public function groups_roles() {
$data['title'] = "Associate Roles to Groups";
$data['groups'] = Group::orderBy('display_name')->paginate(PAGINATION);
$data['roles'] = Role::orderBy('display_name')->get();
return view('groups/groups_roles',$data);
}
public function updateGroupRoles($id, UpdateGroupRolesRequest $request) {
DB::table('group_role')->where('group_id', $id)->delete();
Group::find($id)->roles()->attach($request['roles']);
return redirect()->route('groups.show',$id)->with('successes',['Group roles updated successfully']);
}
}
?>