filled('search')) { $search = $request->search; $query->where(function ($q) use ($search) { $q->where('name', 'like', "%{$search}%") ->orWhere('username', 'like', "%{$search}%") ->orWhere('email', 'like', "%{$search}%"); }); } // Filter by role if ($request->filled('role') && $request->role !== 'all') { $query->where('role', $request->role); } // Order by ID descending (newest first) $users = $query->orderBy('id', 'desc')->paginate(15); return view('admin.users.index', compact('users')); } /** * Show the form for creating a new user. */ public function create() { return view('admin.users.create'); } /** * Store a newly created user in storage. */ public function store(Request $request) { $validated = $request->validate([ 'name' => ['required', 'string', 'max:255'], 'username' => ['required', 'string', 'max:255', 'unique:users'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'string', 'min:8', 'confirmed'], 'role' => ['required', 'in:admin,winemaker,employee,customer'], ]); User::create($validated); return redirect()->route('admin.users.index') ->with('success', 'User created successfully.'); } /** * Show the form for editing the specified user. */ public function edit(User $user) { return view('admin.users.edit', compact('user')); } /** * Update the specified user in storage. */ public function update(Request $request, User $user) { $validated = $request->validate([ 'name' => ['required', 'string', 'max:255'], 'username' => ['required', 'string', 'max:255', 'unique:users,username,' . $user->id], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users,email,' . $user->id], 'password' => ['nullable', 'string', 'min:8', 'confirmed'], 'role' => ['required', 'in:admin,winemaker,employee,customer'], ]); // Only update password if provided if (empty($validated['password'])) { unset($validated['password']); } $user->update($validated); return redirect()->route('admin.users.index') ->with('success', 'User updated successfully.'); } /** * Delete a user. */ public function destroy(User $user) { // Prevent deleting yourself if ($user->id === auth()->id()) { return back()->with('error', 'You cannot delete your own account.'); } $user->delete(); return back()->with('success', 'User deleted successfully.'); } }