using KiMailOrderAgent.Models;

namespace KiMailOrderAgent.Approval;

public class OrderValidator
{
    public OrderValidationResult Validate(ExtractedOrder order)
    {
        var result = new OrderValidationResult();

        if (order.Items.Count == 0)
            result.Errors.Add("Keine Positionen erkannt.");

        foreach (var item in order.Items)
        {
            if (string.IsNullOrWhiteSpace(item.ArticleNumber))
                result.Errors.Add($"Keine Artikelnummer erkannt für: {item.Description}");

            if (item.Quantity <= 0)
                result.Errors.Add($"Ungültige Menge bei: {item.Description}");

            if (item.Confidence < 0.8)
                result.Warnings.Add($"Unsichere Artikelerkennung: {item.Description} ({item.Confidence:P0})");
        }

        result.IsValid = result.Errors.Count == 0;

        return result;
    }
}
