LabelTemplatePrintOrientationHelper.cs 1.2 KB
using Volo.Abp;

namespace FoodLabeling.Application.Helpers;

/// <summary>
/// 标签模板 <c>PrintOrientation</c> 归一化与校验(库值 / API:<c>vertical</c>、<c>horizontal</c>)。
/// </summary>
public static class LabelTemplatePrintOrientationHelper
{
    /// <summary>竖打</summary>
    public const string Vertical = "vertical";

    /// <summary>横打</summary>
    public const string Horizontal = "horizontal";

    /// <summary>
    /// 空或未识别时默认 <see cref="Vertical"/>;横打时不交换 Width/Height。
    /// </summary>
    public static string Normalize(string? raw)
    {
        var v = (raw ?? string.Empty).Trim().ToLowerInvariant();
        return v == Horizontal ? Horizontal : Vertical;
    }

    /// <summary>
    /// 非空且非 vertical/horizontal 时抛出友好异常。
    /// </summary>
    public static void EnsureValidOrThrow(string? raw)
    {
        if (string.IsNullOrWhiteSpace(raw))
        {
            return;
        }

        var v = raw.Trim().ToLowerInvariant();
        if (v is Vertical or Horizontal)
        {
            return;
        }

        throw new UserFriendlyException("printOrientation 仅支持 vertical 或 horizontal");
    }
}