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

namespace TakeoutSaaS.Domain.Tenants.Entities;

/// <summary>
/// 平台租户信息，描述租户的生命周期与基础资料。
/// </summary>
public sealed class Tenant : AuditableEntityBase
{
    /// <summary>
    /// 租户短编码，作为跨系统引用的唯一标识。
    /// </summary>
    public string Code { get; set; } = string.Empty;

    /// <summary>
    /// 租户全称或品牌名称。
    /// </summary>
    public string Name { get; set; } = string.Empty;

    /// <summary>
    /// 对外展示的简称。
    /// </summary>
    public string? ShortName { get; set; }

    /// <summary>
    /// 法人或公司主体名称。
    /// </summary>
    public string? LegalEntityName { get; set; }

    /// <summary>
    /// 所属行业，如餐饮、零售等。
    /// </summary>
    public string? Industry { get; set; }

    /// <summary>
    /// LOGO 图片地址。
    /// </summary>
    public string? LogoUrl { get; set; }

    /// <summary>
    /// 品牌海报或封面图。
    /// </summary>
    public string? CoverImageUrl { get; set; }

    /// <summary>
    /// 官网或主要宣传链接。
    /// </summary>
    public string? Website { get; set; }

    /// <summary>
    /// 所在国家/地区。
    /// </summary>
    public string? Country { get; set; }

    /// <summary>
    /// 所在省份或州。
    /// </summary>
    public string? Province { get; set; }

    /// <summary>
    /// 所在城市。
    /// </summary>
    public string? City { get; set; }

    /// <summary>
    /// 详细地址信息。
    /// </summary>
    public string? Address { get; set; }

    /// <summary>
    /// 主联系人姓名。
    /// </summary>
    public string? ContactName { get; set; }

    /// <summary>
    /// 主联系人电话。
    /// </summary>
    public string? ContactPhone { get; set; }

    /// <summary>
    /// 主联系人邮箱。
    /// </summary>
    public string? ContactEmail { get; set; }

    /// <summary>
    /// 系统内对应的租户所有者账号 ID。
    /// </summary>
    public long? PrimaryOwnerUserId { get; set; }

    /// <summary>
    /// 租户当前状态，涵盖审核、启用、停用等场景。
    /// </summary>
    public TenantStatus Status { get; set; } = TenantStatus.PendingReview;

    /// <summary>
    /// 服务生效时间（UTC）。
    /// </summary>
    public DateTime? EffectiveFrom { get; set; }

    /// <summary>
    /// 服务到期时间（UTC）。
    /// </summary>
    public DateTime? EffectiveTo { get; set; }

    /// <summary>
    /// 最近一次暂停服务时间。
    /// </summary>
    public DateTime? SuspendedAt { get; set; }

    /// <summary>
    /// 暂停或终止的原因说明。
    /// </summary>
    public string? SuspensionReason { get; set; }

    /// <summary>
    /// 业务标签集合（逗号分隔）。
    /// </summary>
    public string? Tags { get; set; }

    /// <summary>
    /// 备注信息，用于运营记录特殊说明。
    /// </summary>
    public string? Remarks { get; set; }
}
