namespace Kompas.Mcp.Core.Modeling;

/// <summary>Куда откладывается толщина тонкой стенки от контура эскиза.</summary>
public enum ThinSide
{
    /// <summary>Наружу от контура (контур — внутренняя граница стенки).</summary>
    Outward,

    /// <summary>Внутрь контура (контур — наружная граница стенки).</summary>
    Inward,

    /// <summary>Симметрично в обе стороны (контур — средняя линия стенки).</summary>
    Both,
}

public static class ThinSides
{
    public static ThinSide Parse(string? value) => (value ?? "").Trim().ToLowerInvariant() switch
    {
        "" or "outward" or "out" => ThinSide.Outward,
        "inward" or "in" => ThinSide.Inward,
        "both" or "middle" => ThinSide.Both,
        _ => throw new ArgumentException(
            $"Неизвестная сторона стенки '{value}'. Допустимо: outward | inward | both.", nameof(value)),
    };
}
