old('permissions', $groupPermissions); $users = \App\Models\User::orderBy('first_name', 'asc')->orderBy('last_name', 'asc')->get(); // Show the page return view('groups/edit', compact('permissions', 'selectedPermissions', 'groupPermissions')) ->with('group', $group) ->with('associated_users', []) ->with('unselected_users', $users) ->with('all_users_count', $users->count()) ; } /** * Validates and stores the new User Group data. * * @author [A. Gianotto] [name = $request->input('name'); if ($request->filled('permission')) { $group->permissions = json_encode($request->array('permission')); } else { $group->permissions = null; } $group->permissions = json_encode($request->input('permission')); $group->created_by = auth()->id(); $group->notes = $request->input('notes'); if ($group->save()) { if ($request->filled('users_to_sync')) { $associated_users = explode(',',$request->input('users_to_sync')); $group->users()->sync($associated_users); } return redirect()->route('groups.index')->with('success', trans('admin/groups/message.success.create')); } return redirect()->back()->withInput()->withErrors($group->getErrors()); } /** * Returns a view that presents a form to edit a User Group. * * @author [A. Gianotto] [decodePermissions(); if ((!is_array($groupPermissions)) || (!$groupPermissions)) { $groupPermissions = []; } $selected_array = Helper::selectedPermissionsArray($permissions, $groupPermissions); $associated_users = $group->users()->orderBy('first_name', 'asc')->orderBy('last_name', 'asc')->get(); // Get the unselected users $unselected_users = \App\Models\User::whereNotIn('id', $associated_users->pluck('id')->toArray())->orderBy('first_name', 'asc')->orderBy('last_name', 'asc')->get(); // We need the total to see whether or not we should show the user selection box :( $all_users_count = $associated_users->count() + $unselected_users->count(); return view('groups.edit', compact('group', 'permissions', 'selected_array', 'groupPermissions')) ->with('associated_users', $associated_users) ->with('unselected_users', $unselected_users) ->with('all_users_count', $all_users_count); } /** * Validates and stores the updated User Group data. * * @author [A. Gianotto] [name = $request->input('name'); if ($request->filled('permission')) { $group->permissions = json_encode($request->array('permission')); } else { $group->permissions = null; } $group->notes = $request->input('notes'); if (! config('app.lock_passwords')) { if ($group->save()) { if ($request->filled('users_to_sync')) { $associated_users = explode(',',$request->input('users_to_sync')); $group->users()->sync($associated_users); } return redirect()->route('groups.index')->with('success', trans('admin/groups/message.success.update')); } return redirect()->back()->withInput()->withErrors($group->getErrors()); } return redirect()->route('groups.index')->with('error', trans('general.feature_disabled')); } /** * Validates and deletes the User Group. * * @author [A. Gianotto] [route('groups.index')->with('error', trans('admin/groups/message.group_not_found', ['id' => $id])); } $group->delete(); return redirect()->route('groups.index')->with('success', trans('admin/groups/message.success.delete')); } return redirect()->route('groups.index')->with('error', trans('general.feature_disabled')); } /** * Returns a view that invokes the ajax tables which actually contains * the content for the group detail page. * * @author [A. Gianotto] [] * @param $id * @since [v4.0.11] */ public function show(Group $group) : View | RedirectResponse { return view('groups/view', compact('group')); } }