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