using System.ComponentModel.DataAnnotations;
using AyCode.Services.Nav.Ekaer.Models;

namespace AyCode.Services.Nav.Ekaer;

/// <summary>
/// Az EKÁER tradeCard műveletek beküldés-előtti ellenőrzése. A NAV-séma (a generált modellek
/// <see cref="ValidationAttribute"/>-jai: Required / pattern / hossz) ÉS az XSD-n felüli üzleti szabályok
/// (pl. a vonó jármű kötelező) ellenőrzése. Minden hibát összegyűjt — nem az elsőnél áll meg.
/// </summary>
/// <remarks>
/// Általános NAV/EKÁER réteg — nem ismer projekt-specifikus (pl. FruitBank) típust, csak a generált modelleket.
/// A hívó (pl. a szerver-oldali EKÁER-service) a beküldés ELŐTT hívja: ha a visszaadott lista nem üres,
/// a bejelentés NEM küldhető. A NAV-validációs szabályok kivonata: <c>Nav/docs/EKAER_VALIDATION.md</c>.
/// </remarks>
public interface IEkaerTradeCardValidator
{
    /// <summary>Egyetlen művelet ellenőrzése. Üres lista = érvényes.</summary>
    IReadOnlyList<ValidationResult> Validate(TradeCardOperationType operation);

    /// <summary>Több művelet ellenőrzése; a hibák a művelet indexével prefixelve. Üres lista = mind érvényes.</summary>
    IReadOnlyList<ValidationResult> Validate(IEnumerable<TradeCardOperationType> operations);
}
