using System.Globalization; namespace SchotzIadKmTracker.Api.Validators; // Fonctions de validation de dates partagées par les validateurs FluentValidation. internal static class DateValidation { public const string FormatJjMmAAAA = @"^\d{2}/\d{2}/\d{4}$"; // Vérifie que la chaîne au format JJ/MM/AAAA correspond à une date réellement existante. public static bool BeAValidDate(string? value) { if (string.IsNullOrWhiteSpace(value)) { return false; } return DateOnly.TryParseExact( value, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out _); } // Vérifie que la date (JJ/MM/AAAA) est existante et n'est pas dans le futur. public static bool BeAValidDateNotInFuture(string? value) { if (!DateOnly.TryParseExact( value, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out var date)) { return false; } return date <= DateOnly.FromDateTime(DateTime.Today); } }