# Bloc Routes Final - Module Attelages ## Import à ajouter dans `routes/api.php` En haut du fichier, avec les autres imports : ```php use App\Http\Controllers\CouplingController; ``` ## Bloc de routes à insérer dans `Route::middleware('auth:sanctum')->group(...)` **⚠️ IMPORTANT** : Insérer ce bloc APRÈS les routes `crew-members` et AVANT la fermeture du groupe `auth:sanctum`. ```php Route::middleware('auth:sanctum')->group(function () { // ... routes existantes (vehicles, trailers, crew-members) ... // Attelages Route::get('/couplings', [CouplingController::class, 'index']); Route::get('/couplings/history', [CouplingController::class, 'history']); Route::get('/couplings/vehicle/{vehicleId}', [CouplingController::class, 'showByVehicle'])->whereNumber('vehicleId'); Route::post('/couplings', [CouplingController::class, 'store']); Route::patch('/couplings/{coupling}', [CouplingController::class, 'update'])->whereNumber('coupling'); // ... autres routes futures ... }); ``` ## Ordre des routes (critique) Les routes spécifiques (`/history`, `/vehicle/{vehicleId}`) doivent être déclarées **AVANT** les routes avec paramètres génériques (`/{coupling}`) pour éviter les collisions de routage Laravel. ## Exemple complet de `routes/api.php` après insertion ```php group(function () { Route::get('/me', [AuthController::class, 'me']); Route::post('/logout', [AuthController::class, 'logout']); Route::get('/logout', [AuthController::class, 'logout']); // workaround ModSecurity Route::apiResource('vehicles', VehicleController::class); Route::post('/upload/vehicle-photo', [VehicleController::class, 'uploadPhoto']); Route::apiResource('trailers', TrailerController::class); Route::post('/upload/trailer-photo', [TrailerController::class, 'uploadPhoto']); Route::apiResource('crew-members', CrewMemberController::class)->parameters([ 'crew-members' => 'crewMember', ]); Route::post('/upload/crew-member-photo', [CrewMemberController::class, 'uploadPhoto']); // Attelages Route::get('/couplings', [CouplingController::class, 'index']); Route::get('/couplings/history', [CouplingController::class, 'history']); Route::get('/couplings/vehicle/{vehicleId}', [CouplingController::class, 'showByVehicle'])->whereNumber('vehicleId'); Route::post('/couplings', [CouplingController::class, 'store']); Route::patch('/couplings/{coupling}', [CouplingController::class, 'update'])->whereNumber('coupling'); }); ``` ## Tests de routage Après insertion, vérifier avec : ```bash php artisan route:list | grep couplings ``` Vous devriez voir : - `GET|HEAD api/couplings ................... couplings.index` - `GET|HEAD api/couplings/history .......... couplings.history` - `GET|HEAD api/couplings/vehicle/{vehicleId} ... couplings.showByVehicle` - `POST api/couplings ................... couplings.store` - `PUT|PATCH api/couplings/{coupling} ........ couplings.update`