using TakeoutSaaS.Shared.Abstractions.Entities;

namespace TakeoutSaaS.Domain.Dictionary.Entities;

/// <summary>
/// 租户字典覆盖配置。
/// </summary>
public sealed class TenantDictionaryOverride : IMultiTenantEntity, IAuditableEntity
{
    /// <summary>
    /// 所属租户 ID。
    /// </summary>
    public long TenantId { get; set; }

    /// <summary>
    /// 系统字典分组 ID。
    /// </summary>
    public long SystemDictionaryGroupId { get; set; }

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

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

    /// <summary>
    /// 自定义排序映射（JSON）。
    /// </summary>
    public string CustomSortOrder { get; set; } = "{}";

    /// <summary>
    /// 创建时间（UTC）。
    /// </summary>
    public DateTime CreatedAt { get; set; }

    /// <summary>
    /// 最近更新时间（UTC）。
    /// </summary>
    public DateTime? UpdatedAt { get; set; }

    /// <summary>
    /// 删除时间（UTC）。
    /// </summary>
    public DateTime? DeletedAt { get; set; }

    /// <summary>
    /// 创建人用户标识。
    /// </summary>
    public long? CreatedBy { get; set; }

    /// <summary>
    /// 最后更新人用户标识。
    /// </summary>
    public long? UpdatedBy { get; set; }

    /// <summary>
    /// 删除人用户标识。
    /// </summary>
    public long? DeletedBy { get; set; }
}
