json($users); } catch (\Exception $e) { return response()->json([ 'message' => 'Failed to fetch users', 'error' => $e->getMessage() ], 500); } } /** * Store a newly created resource in storage. */ public function store(Request $request): JsonResponse { try { $validated = $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:8', ]); $user = User::create([ 'name' => $validated['name'], 'email' => $validated['email'], 'password' => bcrypt($validated['password']), ]); return response()->json($user, 201); } catch (ValidationException $e) { return response()->json([ 'message' => 'Validation failed', 'errors' => $e->errors() ], 422); } catch (\Exception $e) { return response()->json([ 'message' => 'Failed to create user', 'error' => $e->getMessage() ], 500); } } /** * Display the specified resource. */ public function show(User $user): JsonResponse { try { return response()->json($user); } catch (\Exception $e) { return response()->json([ 'message' => 'Failed to fetch user', 'error' => $e->getMessage() ], 500); } } /** * Update the specified resource in storage. */ public function update(Request $request, User $user): JsonResponse { try { $validated = $request->validate([ 'name' => 'sometimes|string|max:255', 'email' => 'sometimes|string|email|max:255|unique:users,email,' . $user->id, 'password' => 'sometimes|string|min:8', ]); if (isset($validated['password'])) { $validated['password'] = bcrypt($validated['password']); } $user->update($validated); return response()->json($user); } catch (ValidationException $e) { return response()->json([ 'message' => 'Validation failed', 'errors' => $e->errors() ], 422); } catch (\Exception $e) { return response()->json([ 'message' => 'Failed to update user', 'error' => $e->getMessage() ], 500); } } /** * Remove the specified resource from storage. */ public function destroy(User $user): JsonResponse { try { $user->delete(); return response()->json([ 'message' => 'User deleted successfully' ]); } catch (\Exception $e) { return response()->json([ 'message' => 'Failed to delete user', 'error' => $e->getMessage() ], 500); } } }