using System.Text.Json.Serialization;
using TakeoutSaaS.Shared.Abstractions.Serialization;

namespace TakeoutSaaS.Application.Dictionary.Models;

/// <summary>
/// 租户字典覆盖配置 DTO。
/// </summary>
public sealed class OverrideConfigDto
{
    /// <summary>
    /// 租户 ID。
    /// </summary>
    [JsonConverter(typeof(SnowflakeIdJsonConverter))]
    public long TenantId { get; init; }

    /// <summary>
    /// 系统字典分组编码。
    /// </summary>
    public string SystemDictionaryGroupCode { get; init; } = string.Empty;

    /// <summary>
    /// 是否启用覆盖。
    /// </summary>
    public bool OverrideEnabled { get; init; }

    /// <summary>
    /// 隐藏的系统字典项 ID 列表。
    /// </summary>
    public long[] HiddenSystemItemIds { get; init; } = Array.Empty<long>();

    /// <summary>
    /// 自定义排序映射。
    /// </summary>
    public Dictionary<long, int> CustomSortOrder { get; init; } = new();
}
