filled('role')) { $query->where('role', $request->role); } // Search by name/email if ($request->filled('search')) { $query->where(function ($q) use ($request) { $q->where('name', 'like', '%' . $request->search . '%') ->orWhere('email', 'like', '%' . $request->search . '%'); }); } $users = $query->latest()->paginate(10)->withQueryString(); $totalAdmin = User::where('role', 'admin')->count(); $totalUser = User::where('role', 'user')->count(); return view('users.index', compact('users', 'totalAdmin', 'totalUser')); } // Ubah role user public function updateRole(Request $request, User $user) { // Admin tidak bisa ubah role dirinya sendiri if ($user->id === auth()->id()) { return back()->withErrors(['error' => 'Kamu tidak bisa mengubah role akunmu sendiri.']); } $request->validate([ 'role' => 'required|in:admin,user', ]); $oldRole = $user->role; $user->update(['role' => $request->role]); $roleLabel = $request->role === 'admin' ? 'Ahli Tanaman' : 'Petani'; $oldLabel = $oldRole === 'admin' ? 'Ahli Tanaman' : 'Petani'; // Notifikasi Notification::create([ 'user_id' => auth()->id(), 'type' => 'system', 'title' => 'Role User Diubah', 'message' => "Role \"{$user->name}\" berhasil diubah dari {$oldLabel} menjadi {$roleLabel}.", 'is_read' => false, ]); return back()->with('status', "Role {$user->name} berhasil diubah menjadi {$roleLabel}."); } // Hapus user public function destroy(User $user) { // Admin tidak bisa hapus dirinya sendiri if ($user->id === auth()->id()) { return back()->withErrors(['error' => 'Kamu tidak bisa menghapus akunmu sendiri.']); } $userName = $user->name; // Hapus data terkait $user->notifications()->delete(); $user->diagnoses()->delete(); $user->delete(); // Notifikasi Notification::create([ 'user_id' => auth()->id(), 'type' => 'system', 'title' => 'User Dihapus', 'message' => "Akun user \"{$userName}\" berhasil dihapus dari sistem.", 'is_read' => false, ]); return back()->with('status', "User {$userName} berhasil dihapus."); } }