// Modèles Trajet — miroir des DTOs backend (TrajetDtos.cs). /** * Création d'un Trajet. * Les coordonnées sont transmises par le Frontend (issues de la sélection BAN) ; * elles sont nulles si l'adresse a été saisie manuellement sans autocomplétion. */ export interface CreateTrajet { date: string; // JJ/MM/AAAA en entrée adresseDepart: string; departLatitude?: number | null; departLongitude?: number | null; adresseArrivee: string; arriveeLatitude?: number | null; arriveeLongitude?: number | null; commentaire?: string | null; // optionnel, max 500 car. vehiculeId?: number | null; // null -> véhicule courant à la date du trajet allerRetour?: boolean; // true -> distance comptée doublée (aller/retour) } /** Mise à jour d'un Trajet. */ export interface UpdateTrajet { date: string; adresseDepart: string; departLatitude?: number | null; departLongitude?: number | null; adresseArrivee: string; arriveeLatitude?: number | null; arriveeLongitude?: number | null; commentaire?: string | null; vehiculeId?: number | null; allerRetour?: boolean; // true -> distance comptée doublée (aller/retour) } /** Réponse Trajet. */ export interface Trajet { id: number; date: string; // ISO date (yyyy-MM-dd) renvoyée par l'API adresseDepart: string; adresseArrivee: string; distance: number | null; // DISTANCE EFFECTIVE (déjà doublée si A/R) ; null si non calculable commentaire: string | null; position: number; // rang dans la journée vehiculeId: number; puissanceFiscale: number; allerRetour: boolean; // information aller/retour conservée par trajet } /** * Trajet enrichi pour l'affichage carte (géométries GeoJSON). * Note : ce DTO ne porte PAS de `commentaire` (le commentaire n'est affiché que * dans la liste des trajets, via l'interface `Trajet`, jamais dans l'infobulle carte). */ export interface TrajetCarte { id: number; date: string; adresseDepart: string; adresseArrivee: string; distance: number; departLatitude?: number | null; departLongitude?: number | null; arriveeLatitude?: number | null; arriveeLongitude?: number | null; geometrieJson: string | null; // GeoJSON LineString ou null allerRetour?: boolean; // information aller/retour conservée par trajet } /** Position d'un trajet lors d'un réordonnancement. */ export interface TrajetPosition { id: number; position: number; } /** Réordonnancement manuel des trajets d'une journée. */ export interface ReordonnerTrajets { trajets: TrajetPosition[]; }