using SchotzIadKmTracker.Api.Models.DTOs; namespace SchotzIadKmTracker.Api.Services; /// /// Calcul des totaux du Panneau_Totaux (jour, mois, Total_Annuel_Partiel) filtrés par véhicule /// et fourniture des données de navigation temporelle (années, mois et jours disponibles). /// public interface ITotauxService { /// /// Calcule, pour la sélectionnée et le véhicule indiqué, les totaux /// kilométriques affichés dans le Panneau_Totaux (Exigences 12.7, 12.8, 12.19) : /// /// TotalJour : somme des distances des Trajets de la journée. /// TotalMois : somme des distances des Trajets du mois de la date. /// TotalAnnuelPartiel : cumul de l'année jusqu'au mois de la date inclus, /// à l'exclusion des mois strictement postérieurs (Property 17). /// /// Les distances nulles sont comptées comme 0 et tous les totaux sont arrondis à 2 décimales. /// Seuls les Trajets du véhicule sont additionnés (Property 21). /// Si vaut null, le Véhicule_Courant est utilisé /// (via ). /// Task GetTotauxAsync(DateOnly date, int? vehiculeId = null, CancellationToken cancellationToken = default); /// /// Retourne la liste des années comportant au moins un Trajet, à laquelle est ajoutée /// l'année courante si elle n'y figure pas déjà (Exigence 12.15). Liste triée croissante. /// Task> GetAnneesDisponiblesAsync(CancellationToken cancellationToken = default); /// /// Retourne la liste des mois (1..12) de l'année comportant au moins /// un Trajet (Exigence 12.16). Liste triée croissante. /// Task> GetMoisDisponiblesAsync(int annee, CancellationToken cancellationToken = default); /// /// Retourne la liste des jours du mois de l'année /// comportant au moins un Trajet (Exigence 12.16). Liste triée croissante. /// Task> GetJoursDisponiblesAsync(int annee, int mois, CancellationToken cancellationToken = default); }