Files
bikeservice/backend/app/Http/Controllers/UserController.php
T
2025-08-27 09:17:56 +02:00

125 lines
3.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use Illuminate\Validation\ValidationException;
class UserController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index(): JsonResponse
{
try {
$users = User::all();
return response()->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);
}
}
}