namespace Kompas.Mcp.Core.Validation;

/// <summary>
/// Расшифровка кодов ошибок построения КОМПАС (<c>ErrorType3d</c>), которые возвращает
/// <c>IFeature7.ObjectError</c>. 0 — ошибки нет.
/// </summary>
public static class Errors3d
{
    /// <summary>true, если код означает отсутствие ошибки.</summary>
    public static bool IsOk(int code) => code == 0;

    /// <summary>Человекочитаемое описание кода ошибки построения.</summary>
    public static string Describe(int code) => code switch
    {
        0 => "ошибки нет",
        -7 => "документ не активизирован или не является деталью/сборкой",
        -1 => "аварийное завершение операции",
        54 => "неизвестная ошибка построения (операция не выполнена)",
        123 => "объекты пересекаются",
        130 => "ошибочная топология",
        135 => "не найдены одна или несколько исходных операций",
        144 => "невозможная операция",
        145 => "операция потеряла опорные объекты",
        179 => "контур невозможно использовать для заданного перемещения",
        185 => "объект не найден",
        193 => "доступ к объекту запрещён",
        199 => "параметр операции был изменён",
        202 => "ошибка при создании скругления грани",
        _ => $"ошибка построения #{code}",
    };
}
