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

namespace TakeoutSaaS.Domain.GroupBuying.Entities;

/// <summary>
/// 拼单活动。
/// </summary>
public sealed class GroupOrder : MultiTenantEntityBase
{
    /// <summary>
    /// 门店标识。
    /// </summary>
    public long StoreId { get; set; }

    /// <summary>
    /// 关联商品或套餐。
    /// </summary>
    public long ProductId { get; set; }

    /// <summary>
    /// 拼单编号。
    /// </summary>
    public string GroupOrderNo { get; set; } = string.Empty;

    /// <summary>
    /// 团长用户 ID。
    /// </summary>
    public long LeaderUserId { get; set; }

    /// <summary>
    /// 成团需要的人数。
    /// </summary>
    public int TargetCount { get; set; }

    /// <summary>
    /// 当前已参与人数。
    /// </summary>
    public int CurrentCount { get; set; }

    /// <summary>
    /// 拼团价格。
    /// </summary>
    public decimal GroupPrice { get; set; }

    /// <summary>
    /// 开始时间。
    /// </summary>
    public DateTime StartAt { get; set; }

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

    /// <summary>
    /// 拼团状态。
    /// </summary>
    public GroupOrderStatus Status { get; set; } = GroupOrderStatus.Open;

    /// <summary>
    /// 成团时间。
    /// </summary>
    public DateTime? SucceededAt { get; set; }

    /// <summary>
    /// 取消时间。
    /// </summary>
    public DateTime? CancelledAt { get; set; }
}
