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

namespace TakeoutSaaS.Domain.Coupons.Entities;

/// <summary>
/// 新客邀请记录。
/// </summary>
public sealed class NewCustomerInviteRecord : MultiTenantEntityBase
{
    /// <summary>
    /// 门店 ID。
    /// </summary>
    public long StoreId { get; set; }

    /// <summary>
    /// 邀请人展示名。
    /// </summary>
    public string InviterName { get; set; } = string.Empty;

    /// <summary>
    /// 被邀请人展示名。
    /// </summary>
    public string InviteeName { get; set; } = string.Empty;

    /// <summary>
    /// 邀请时间。
    /// </summary>
    public DateTime InviteTime { get; set; }

    /// <summary>
    /// 订单状态。
    /// </summary>
    public NewCustomerInviteOrderStatus OrderStatus { get; set; } = NewCustomerInviteOrderStatus.PendingOrder;

    /// <summary>
    /// 奖励状态。
    /// </summary>
    public NewCustomerInviteRewardStatus RewardStatus { get; set; } = NewCustomerInviteRewardStatus.Pending;

    /// <summary>
    /// 奖励发放时间。
    /// </summary>
    public DateTime? RewardIssuedAt { get; set; }

    /// <summary>
    /// 邀请来源渠道。
    /// </summary>
    public string? SourceChannel { get; set; }
}
