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

namespace TakeoutSaaS.Domain.CustomerService.Entities;

/// <summary>
/// 客服会话。
/// </summary>
public sealed class ChatSession : MultiTenantEntityBase
{
    /// <summary>
    /// 会话编号。
    /// </summary>
    public string SessionCode { get; set; } = string.Empty;

    /// <summary>
    /// 顾客用户 ID。
    /// </summary>
    public long CustomerUserId { get; set; }

    /// <summary>
    /// 当前客服员工 ID。
    /// </summary>
    public long? AgentUserId { get; set; }

    /// <summary>
    /// 所属门店（可空为系统会话）。
    /// </summary>
    public long? StoreId { get; set; }

    /// <summary>
    /// 会话状态。
    /// </summary>
    public ChatSessionStatus Status { get; set; } = ChatSessionStatus.Waiting;

    /// <summary>
    /// 是否机器人接待中。
    /// </summary>
    public bool IsBotActive { get; set; }

    /// <summary>
    /// 开始时间。
    /// </summary>
    public DateTime StartedAt { get; set; } = DateTime.UtcNow;

    /// <summary>
    /// 结束时间。
    /// </summary>
    public DateTime? EndedAt { get; set; }
}
