using TakeoutSaaS.Domain.Dictionary.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;

namespace TakeoutSaaS.Domain.Dictionary.Entities;

/// <summary>
/// 字典标签覆盖配置。
/// </summary>
public sealed class DictionaryLabelOverride : EntityBase, IMultiTenantEntity, IAuditableEntity
{
    /// <summary>
    /// 所属租户 ID（覆盖目标租户）。
    /// </summary>
    public long TenantId { get; set; }

    /// <summary>
    /// 被覆盖的字典项 ID。
    /// </summary>
    public long DictionaryItemId { get; set; }

    /// <summary>
    /// 原始显示值（JSON 格式，多语言）。
    /// </summary>
    public string OriginalValue { get; set; } = "{}";

    /// <summary>
    /// 覆盖后的显示值（JSON 格式，多语言）。
    /// </summary>
    public string OverrideValue { get; set; } = "{}";

    /// <summary>
    /// 覆盖类型。
    /// </summary>
    public OverrideType OverrideType { get; set; }

    /// <summary>
    /// 覆盖原因/备注。
    /// </summary>
    public string? Reason { 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; }

    /// <summary>
    /// 导航属性：被覆盖的字典项。
    /// </summary>
    public DictionaryItem? DictionaryItem { get; set; }
}
