Skip to content

Resolve VSN-1941 "Driver's planning integration"

yassine sabir a demandé de fusionner feature/VSN-1941 vers develop

Fonctionnalités implémentées et appels API associés

1. Chargement initial de la liste des trips

Appel API : GET /api/planning/drivers/{driverId}/trips?monthYear=YYYY-MM Fonctionnalité :

  • Au chargement de l'écran Planning, récupération des trips du conducteur connecté
  • Paramètres par défaut : mois en cours (monthYear=YYYY-MM)
  • Filtres optionnels : status[], type[], vehicleId, startDate, endDate
  • Mapping des DTOs backend (MobileTripDTO) vers l'interface frontend (Trip)
  • Conservation du tripCircuitId pour l'enrichissement ultérieur
  • Affichage des trips dans TripCard avec :

Couleur de bordure selon le statut (Prévu: violet, En cours: vert, Terminé: rouge) Nombre de passagers (confirmedPassengers/totalPassengers) avec icône users Informations du véhicule (plaque d'immatriculation) Type de trip (école, transport, maintenance, autre)

Fichiers modifiés : store/planningStore.ts, config/Api/planningService.ts, screens/innerApplication/planning/components/TripCard.tsx, screens/innerApplication/planning/agendaViewScreen.tsx

2. Affichage des trips en liste et agenda

Appel API : Aucun (utilise les données déjà chargées) Fonctionnalité :

  • Vue liste : trips affichés sous forme de cartes (TripCard)
  • Vue agenda : trips groupés par date avec sélecteur de semaine
  • Filtrage côté client : recherche par texte, filtres par statut/type/véhicule
  • Tri automatique par date et heure de début
  • Pull-to-refresh pour recharger les trips

Fichiers modifiés : screens/innerApplication/planning/planningScreen.tsx, screens/innerApplication/planning/agendaViewScreen.tsx

3. Enrichissement des détails de trip avec Circuit Service

Appel API : GET /api/circuit/trip/{tripCircuitId} Fonctionnalité :

  • Lors de l'ouverture des détails d'un trip, si tripCircuitId est disponible, appel au Circuit Service
  • Extraction des données enrichies :

Distance réelle (distanceKm → circuitDistance) Noms des passagers depuis tripPoints.passengerDetailsTrip.fullName Points de passage pour la carte (circuitTripPoints avec adresses, coordonnées, heures) Calcul de calculatedStartDate et calculatedEndDate à partir du premier et dernier pickupTime des passagers

  • Fusion des données Planning Service + Circuit Service dans selectedTrip

Fichiers modifiés : store/planningStore.ts, config/Api/circuitService.ts, shared/types/planning.ts

4. Affichage des détails de trip enrichis

Appel API : GET /api/planning/drivers/{driverId}/trips/{tripId} (appelé en premier) Fonctionnalité :

  • Affichage des sections :

RouteSection : Départ, Arrivée, Distance parcourue (depuis Circuit Service) TimeSection : Heures de début/fin calculées si plusieurs passagers, avec note explicative ContactSection : Liste des passagers (expandable/collapsible) StopsSection : Points de passage avec adresses et heures (depuis circuitTripPoints) VehicleSection : Informations du véhicule assigné

  • Bouton "Voir sur la carte" : passe les adresses circuitTripPoints à l'écran de géolocalisation

Fichiers modifiés : screens/innerApplication/planning/tripDetailsScreen.tsx, screens/innerApplication/planning/components/tripDetails/RouteSection.tsx, screens/innerApplication/planning/components/tripDetails/TimeSection.tsx, screens/innerApplication/planning/components/tripDetails/StopsSection.tsx

5. Section Contact expandable/collapsible

Appel API : Aucun (utilise les données déjà chargées) Fonctionnalité :

  • Affichage initial de 2 passagers
  • Bouton "Voir tous les passagers (X de plus)" si plus de 2
  • Expansion pour afficher tous les passagers
  • Réduction avec "Voir moins"
  • Layout en 2 colonnes avec flexWrap
  • Chaque contact est cliquable pour naviguer vers les détails du passager

Fichiers modifiés : screens/innerApplication/planning/components/tripDetails/ContactSection.tsx

6. Navigation vers détails passager

Appel API : Aucun (navigation uniquement) Fonctionnalité :

  • Clic sur un nom/numéro de passager → navigation vers l'écran de détails
  • Gestion de 3 cas :

Si ID disponible : navigation directe avec ID (/(tabs)/planning/passenger/[id]) Si seulement téléphone : navigation avec recherche par nom (/(tabs)/planning/passenger/search) Si seulement nom : navigation avec recherche par nom

Fichiers modifiés : screens/innerApplication/planning/tripDetailsScreen.tsx, app/(tabs)/planning/passenger/[id].tsx, app/(tabs)/planning/passenger/search.tsx

7. Écran de détails passager avec recherche optimisée

Appels API :

  • GET /api/user/passenger/{id} (si ID disponible - 1 seul appel)
  • GET /api/user/passenger/search?firstName=...&lastName=... (si recherche par nom - 1 seul appel, résultat utilisé directement) Fonctionnalité :
  • Affichage des informations publiques du passager :

Informations personnelles (nom, date/lieu de naissance, classe) Coordonnées (téléphones mobiles/fixes, adresse) Informations de transport (établissement, code circuit, début transport, département) Représentant (nom, email) Observations

  • Appel téléphonique : boutons cliquables pour chaque numéro avec confirmation avant appel (Linking.openURL('tel:...'))
  • Optimisation : recherche par nom retourne directement un PassengerDTO complet, évitant un second appel getPassengerById

Fichiers modifiés : screens/innerApplication/planning/passengerDetailsScreen.tsx, config/Api/passengerService.ts, config/endpoints/authEndpoints.ts

Rapports de requête de fusion