# Endpoint: Récupérer les chauffeurs d'une compagnie ## Description Cet endpoint permet de récupérer la liste paginée des chauffeurs associés à une compagnie spécifique. ## URL ``` GET /api/companies/{id}/drivers ``` ## Paramètres ### Paramètres de chemin - `id` (number, requis) : ID de la compagnie ### Paramètres de requête (optionnels) - `page` (number, défaut: 1) : Numéro de page pour la pagination - `limit` (number, défaut: 10) : Nombre d'éléments par page ## Authentification - Rôles autorisés : `ADMIN`, `MANAGER`, `EMPLOYEE` - Token JWT requis dans l'en-tête `Authorization: Bearer ` ## Réponse ### Succès (200) ```json { "data": [ { "id": 1, "name": "Jean Dupont", "otherName": "Pierre", "email": "jean.dupont@example.com", "telephone": "+225 01 02 03 04 05", "address": "123 Rue de la Paix, Abidjan", "role": "DRIVER", "companyId": 1, "driver": { "id": 1, "name": "Jean Dupont", "address": "123 Rue de la Paix, Abidjan", "telephone": "+225 01 02 03 04 05", "companyId": 1, "userId": 1, "vehicules": [ { "id": 1, "immatriculation": "AB-123-CD", "model": "Mercedes Sprinter", "type": "van", "number_places": 20 } ] } } ], "total": 15, "page": 1, "limit": 10, "totalPages": 2 } ``` ### Erreurs #### 404 - Compagnie non trouvée ```json { "statusCode": 404, "message": "Entreprise avec l'ID 123 non trouvée", "error": "Not Found" } ``` #### 401 - Non autorisé ```json { "statusCode": 401, "message": "Unauthorized", "error": "Unauthorized" } ``` #### 403 - Accès refusé ```json { "statusCode": 403, "message": "Forbidden resource", "error": "Forbidden" } ``` ## Exemples d'utilisation ### Récupérer tous les chauffeurs d'une compagnie ```bash curl -X GET "http://localhost:3001/api/companies/1/drivers" \ -H "Authorization: Bearer " ``` ### Récupérer les chauffeurs avec pagination ```bash curl -X GET "http://localhost:3001/api/companies/1/drivers?page=2&limit=5" \ -H "Authorization: Bearer " ``` ## Notes techniques ### Architecture - **Use Case** : `FindDriversByCompanyUseCase` - **Repository** : `CompanyRepository.findDriversByCompanyId()` - **Contrôleur** : `CompanyController.getDrivers()` ### Filtrage - Seuls les utilisateurs avec le rôle `DRIVER` sont retournés - Les chauffeurs doivent être associés à la compagnie spécifiée (`companyId`) ### Relations incluses - Informations de base de l'utilisateur - Détails du profil chauffeur - Liste des véhicules assignés au chauffeur - Informations de la compagnie ### Performance - Pagination automatique pour éviter les surcharges - Index sur `companyId` et `role` dans la base de données - Requêtes optimisées avec `Promise.all()` pour le count et les données ## Cas d'usage 1. **Interface d'administration** : Gestion des chauffeurs par compagnie 2. **Assignation de trajets** : Sélection des chauffeurs disponibles 3. **Rapports** : Statistiques sur les chauffeurs par compagnie 4. **Interface mobile employé** : Visualisation des chauffeurs de l'entreprise