using SchotzIadKmTracker.Api.Models.DTOs; namespace SchotzIadKmTracker.Api.Services; /// /// Logique métier de gestion des véhicules : historique, véhicule courant, /// création (avec détection de réaffectation) et réaffectation des trajets. /// public interface IVehiculeService { /// Retourne l'historique complet des véhicules (plaque, puissance fiscale, date d'effet), trié par Date_Effet décroissante. Task> GetHistoriqueAsync(CancellationToken cancellationToken = default); /// /// Retourne le Véhicule_Courant : Date_Effet la plus récente parmi celles <= aujourd'hui. /// Lève si aucun véhicule n'est applicable. /// Task GetVehiculeCourantAsync(CancellationToken cancellationToken = default); /// /// Résout le véhicule applicable à une date donnée (pour l'association d'un trajet) : /// Date_Effet la plus récente <= . /// Retourne null si aucun véhicule n'est applicable à cette date. /// Task GetVehiculeADateAsync(DateOnly date, CancellationToken cancellationToken = default); /// /// Crée un véhicule, conserve l'historique et détecte les trajets à réaffecter /// (date >= Date_Effet et puissance fiscale différente). /// Lève si la Date_Effet est postérieure à aujourd'hui. /// Task CreateAsync(CreateVehiculeDto dto, CancellationToken cancellationToken = default); /// /// Applique (ou non) la réaffectation des trajets au véhicule indiqué. /// Si est vrai, met à jour VehiculeId + PuissanceFiscale /// de tous les trajets dont la Date >= Date_Effet du véhicule ; sinon ne change rien. /// Lève si le véhicule n'existe pas. /// Task ReaffecterAsync(ReaffectationDto dto, CancellationToken cancellationToken = default); }