using System.ComponentModel.DataAnnotations; namespace AyCode.Services.Nav.Ekaer; /// Az EKÁER validációs üzenet súlyossága. public enum EkaerSeverity { /// Nem blokkoló — a bejelentés beküldhető, de valamit pótolni kell (pl. a rendszám a felrakodásig). Warning, /// Blokkoló — a NAV elutasítaná; beküldés előtt javítandó. Error, } /// /// Súlyossággal (warning/error) bővített validációs eredmény. A -ból származik, /// így a meglévő fogyasztók (akik csak az ErrorMessage-et használják) változatlanul működnek; aki a /// szintet is akarja, a -t / a GetSeverity() kiterjesztést használja. /// public sealed class EkaerValidationMessage(EkaerSeverity severity, string message) : ValidationResult(message) { public EkaerSeverity Severity { get; } = severity; } /// Súlyosság-segédek a validációs eredmény-listához. public static class EkaerValidationExtensions { /// A súlyosság; egy sima (nem ) eredmény konzervatívan . public static EkaerSeverity GetSeverity(this ValidationResult result) => result is EkaerValidationMessage m ? m.Severity : EkaerSeverity.Error; /// Van-e blokkoló (error) szintű üzenet — ennek alapján NEM küldhető a bejelentés. public static bool HasErrors(this IEnumerable results) => results.Any(r => r.GetSeverity() == EkaerSeverity.Error); /// Van-e warning szintű üzenet (a beküldést nem blokkolja, de pótlandó). public static bool HasWarnings(this IEnumerable results) => results.Any(r => r.GetSeverity() == EkaerSeverity.Warning); }