From 7ead83e69fa1ed2f5b7ea90176f7cdd2c6ca222f Mon Sep 17 00:00:00 2001 From: Sallu9007 Date: Tue, 13 May 2025 23:05:24 +0530 Subject: [PATCH] Feat: User Management --- app/Http/Controllers/UserController.php | 62 ++- .../partials/sidebar_navigators.blade.php | 26 +- resources/views/pages/users/index.blade.php | 501 ++++++++++++++++++ routes/web.php | 3 + 4 files changed, 582 insertions(+), 10 deletions(-) create mode 100644 resources/views/pages/users/index.blade.php diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 969570a..f8a1f1d 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -1,8 +1,11 @@ get(); - return response()->json($users); + $departments = Department::all(); + return view('pages.users.index', compact('departments')); + } + + public function getUsersData(Request $request) + { + $responses = User::with(['role', 'department']) + ->select('users.*'); + + // Apply filters + if ($request->has('department') && !empty($request->department)) { + $responses->where('department_id', $request->department); + } + if ($request->has('role') && !empty($request->role)) { + $responses->where('role_id', $request->role); + } + + return DataTables::of($responses) + ->addColumn('department_name', function ($response) { + return $response->department ? $response->department->name : 'Unknown'; + }) + ->addColumn('role_name', function ($response) { + $roles = [ + 1 => 'Admin', + 2 => 'Coordinator', + 3 => 'Faculty', + ]; + $options = ''; + foreach ($roles as $id => $name) { + $selected = $response->role_id == $id ? 'selected' : ''; + $options .= ""; + } + return ""; + }) + ->addColumn('action', function ($response) { + $actions = []; + + // Edit button with role-appropriate route + $userRole = auth()->user()->role->name; + // Determine the appropriate route based on user role + // if ($userRole === 'Admin') { + // $editRoute = route('admin.users.edit', $response->id); + // } elseif ($userRole === 'Coordinator') { + // $editRoute = route('coordinator.users.edit', $response->id); + // } else { + // $editRoute = route('faculty.users.edit', $response->id); + // } + + // $actions[] = ''; + + $deleteRoute = route('users.destroy', $response->id); + $actions[] = ''; + + return implode(' ', $actions); + }) + ->rawColumns(['action', 'role_name']) + ->make(true); } public function store(Request $request) diff --git a/resources/views/layouts/partials/sidebar_navigators.blade.php b/resources/views/layouts/partials/sidebar_navigators.blade.php index f2313d3..9441956 100644 --- a/resources/views/layouts/partials/sidebar_navigators.blade.php +++ b/resources/views/layouts/partials/sidebar_navigators.blade.php @@ -12,6 +12,16 @@ @if(auth()->user()->role->name === 'Admin') +