search) { $query->where('name', 'like', '%' . $request->search . '%') ->orWhere('email', 'like', '%' . $request->search . '%'); } $users = $query->paginate($request->per_page ?? 10); return view('master.users.index', compact('users')); } public function store(Request $request) { $validator = Validator::make($request->all(), [ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email|max:255', 'password' => 'required|min:6', 'role' => 'required|string|max:255', ]); if ($validator->fails()) { return response()->json(['status' => 'error', 'errors' => $validator->errors()], 422); } User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => Hash::make($request->password), // Enkripsi password 'role' => $request->role, ]); return response()->json(['status' => 'success', 'message' => 'User berhasil ditambahkan']); } public function show($id) { try { $user = User::findOrFail($id); return response()->json(['status' => 'success', 'data' => $user]); } catch (\Exception $e) { return response()->json(['status' => 'error', 'message' => 'User tidak ditemukan'], 404); } } public function update(Request $request, $id) { $user = User::findOrFail($id); $validator = Validator::make($request->all(), [ 'name' => 'required|string|max:255', 'email' => 'required|email|max:255|unique:users,email,' . $id, // Pengecualian email unik untuk ID ini 'role' => 'required|string|max:255', 'password' => 'nullable|min:6', ]); if ($validator->fails()) { return response()->json(['status' => 'error', 'errors' => $validator->errors()], 422); } $user->name = $request->name; $user->email = $request->email; $user->role = $request->role; // Update password HANYA JIKA diisi if ($request->filled('password')) { $user->password = Hash::make($request->password); } $user->save(); return response()->json(['status' => 'success', 'message' => 'User berhasil diupdate']); } public function destroy($id) { $user = User::findOrFail($id); $user->delete(); return response()->json(['status' => 'success', 'message' => 'User berhasil dihapus']); } }