-
- @foreach ($errors->all() as $error)
-
- {{ $error }} - @endforeach -
diff --git a/app/Http/Controllers/Admin/GroupUserController.php b/app/Http/Controllers/Admin/GroupUserController.php new file mode 100755 index 0000000..16f3afb --- /dev/null +++ b/app/Http/Controllers/Admin/GroupUserController.php @@ -0,0 +1,92 @@ +middleware('auth'); + } + + public function index(Request $request) + { + Gate::authorize('viewAny', Group::class); + + $query = Group::with(['organization', 'users']); + + if ($request->filled('organization_id')) { + $query->where('organization_id', $request->organization_id); + } + + $groups = $query->orderBy('name')->paginate(20); + $organizations = Organization::pluck('name', 'id'); + + return view('admin.groups.index', compact('groups', 'organizations')); + } + + public function show(Group $group) + { + Gate::authorize('view', $group); + + $group->load(['organization', 'users']); + $users = User::where('organization_id', $group->organization_id)->get(); + + return view('admin.groups.show', compact('group', 'users')); + } + + public function edit(Group $group) + { + Gate::authorize('update', $group); + + $group->load(['organization', 'users']); + $users = User::where('organization_id', $group->organization_id)->get(); + + return view('admin.groups.edit', compact('group', 'users')); + } + + public function update(Request $request, Group $group) + { + Gate::authorize('update', $group); + + $validated = $request->validate([ + 'name' => 'required|string|max:255', + 'description' => 'nullable|string', + 'is_active' => 'boolean', + 'users' => 'nullable|array', + 'users.*' => 'exists:users,id', + ]); + + $group->update($validated); + + // Синхронизируем пользователей в группе + if (isset($validated['users'])) { + $group->users()->sync($validated['users']); + } + + return redirect()->route('admin.groups.show', $group) + ->with('success', 'Группа успешно обновлена.'); + } + + public function destroy(Group $group) + { + Gate::authorize('delete', $group); + + if ($group->users()->count() > 0) { + return back()->with('error', 'Нельзя удалить группу с пользователями. Сначала удалите пользователей из группы.'); + } + + $group->delete(); + + return redirect()->route('admin.groups.index') + ->with('success', 'Группа успешно удалена.'); + } +} diff --git a/resources/views/admin/groups/create.blade.php b/resources/views/admin/groups/create.blade.php old mode 100644 new mode 100755 diff --git a/resources/views/admin/groups/edit.blade.php b/resources/views/admin/groups/edit.blade.php old mode 100644 new mode 100755 index 8992508..b00d4d7 --- a/resources/views/admin/groups/edit.blade.php +++ b/resources/views/admin/groups/edit.blade.php @@ -1,95 +1,64 @@ @extends('layouts.app') - @section('title', 'Редактировать группу') - @section('content')