companies-drivers.md 3.2 KB

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 <token>

Réponse

Succès (200)

{
  "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

{
  "statusCode": 404,
  "message": "Entreprise avec l'ID 123 non trouvée",
  "error": "Not Found"
}

401 - Non autorisé

{
  "statusCode": 401,
  "message": "Unauthorized",
  "error": "Unauthorized"
}

403 - Accès refusé

{
  "statusCode": 403,
  "message": "Forbidden resource",
  "error": "Forbidden"
}

Exemples d'utilisation

Récupérer tous les chauffeurs d'une compagnie

curl -X GET "http://localhost:3001/api/companies/1/drivers" \
  -H "Authorization: Bearer <your-jwt-token>"

Récupérer les chauffeurs avec pagination

curl -X GET "http://localhost:3001/api/companies/1/drivers?page=2&limit=5" \
  -H "Authorization: Bearer <your-jwt-token>"

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