Files
SchotzIAD/backend/SchotzIadKmTracker.Api/Models/Entities/Trajet.cs
T
MadJax 0e6a97ca61 Renommage : TrajetKmTracker -> SchotzIadKmTracker (backend, specs, frontend)
- Backend : projets, solution, namespaces et références
  TrajetKmTracker.Api/.Tests -> SchotzIadKmTracker.Api/.Tests
  (dossiers, .csproj, .sln, .http, namespaces C#). GUID UserSecretsId préservé.
- Specs : dossier .kiro/specs/trajet-km-tracker -> schotziad-km-tracker
  et mise à jour des références internes (chemins, tags de propriétés).
- Frontend : projet Angular trajet-km-tracker -> schotziad-km-tracker
  (package.json, angular.json, chemin dist, Dockerfile), titre applicatif
  'SchotzIAD KM Tracker'.
- Docker et scripts (backend/Dockerfile, frontend/Dockerfile, run-dev.sh) mis à jour.
- Suppression du fichier résiduel package.json.bak.

Backend (solution) et frontend (build production) compilent sans erreur.
2026-09-14 07:50:26 +02:00

61 lines
2.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System.ComponentModel.DataAnnotations;
namespace SchotzIadKmTracker.Api.Models.Entities;
/// <summary>Trajet kilométrique saisi par l'utilisateur.</summary>
public class Trajet
{
public int Id { get; set; }
[Required]
public DateOnly Date { get; set; }
[Required, MaxLength(255)]
public string AdresseDepart { get; set; } = string.Empty;
[Required, MaxLength(255)]
public string AdresseArrivee { get; set; } = string.Empty;
/// <summary>
/// Distance en kilomètres, arrondie à 2 décimales, strictement positive lorsqu'elle est
/// connue. <c>null</c> lorsque la distance n'a pas pu être calculée (aucune coordonnée
/// résoluble via le Cache_Adresses / la BAN) : le Trajet est alors persisté avec une
/// Distance nulle et un avertissement (Exigence 2.4). La modification ultérieure peut
/// recalculer la Distance si de nouvelles coordonnées deviennent disponibles (Exigence 5.10).
/// </summary>
public decimal? Distance { get; set; }
/// <summary>Commentaire optionnel (0–500 caractères).</summary>
[MaxLength(500)]
public string? Commentaire { get; set; }
/// <summary>
/// Géométrie GeoJSON (LineString) de l'itinéraire routier départ→arrivée, telle que
/// renvoyée par OpenRouteService, pour le tracé exact sur la carte. <c>null</c> lorsque
/// l'itinéraire routier n'a pas pu être obtenu (fallback vol d'oiseau) : la carte trace
/// alors une ligne droite. La géométrie dépend de la PAIRE départ→arrivée, c'est pourquoi
/// elle est portée par le Trajet et non par le Cache_Adresses (indexé par adresse seule).
/// </summary>
public string? GeometrieJson { get; set; }
/// <summary>
/// Rang du trajet dans la liste de la journée. Valeur décimale (ex. 1.0, 1.5, 2.0)
/// permettant l'insertion sans réordonnancement systématique.
/// Trié par ordre croissant pour l'affichage.
/// </summary>
[Required]
public decimal Position { get; set; }
/// <summary>Référence au véhicule associé au trajet (véhicule courant à la date de création par défaut).</summary>
[Required]
public int VehiculeId { get; set; }
public Vehicule? Vehicule { get; set; }
/// <summary>Puissance fiscale (CV) du véhicule au moment de l'association ; stockée pour l'historique.</summary>
[Required]
public int PuissanceFiscale { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;
}