namespace TakeoutSaaS.Application.App.Coupons.PunchCard.Dto;

/// <summary>
/// 次卡列表项。
/// </summary>
public sealed class PunchCardListItemDto
{
    /// <summary>
    /// 次卡 ID。
    /// </summary>
    public long Id { get; init; }

    /// <summary>
    /// 次卡名称。
    /// </summary>
    public string Name { get; init; } = string.Empty;

    /// <summary>
    /// 封面图。
    /// </summary>
    public string? CoverImageUrl { get; init; }

    /// <summary>
    /// 售价。
    /// </summary>
    public decimal SalePrice { get; init; }

    /// <summary>
    /// 原价。
    /// </summary>
    public decimal? OriginalPrice { get; init; }

    /// <summary>
    /// 总次数。
    /// </summary>
    public int TotalTimes { get; init; }

    /// <summary>
    /// 有效期展示文案。
    /// </summary>
    public string ValiditySummary { get; init; } = string.Empty;

    /// <summary>
    /// 适用范围类型（all/category/tag/product）。
    /// </summary>
    public string ScopeType { get; init; } = "all";

    /// <summary>
    /// 使用模式（free/cap）。
    /// </summary>
    public string UsageMode { get; init; } = "free";

    /// <summary>
    /// 单次使用上限金额。
    /// </summary>
    public decimal? UsageCapAmount { get; init; }

    /// <summary>
    /// 每日限用次数。
    /// </summary>
    public int? DailyLimit { get; init; }

    /// <summary>
    /// 状态（enabled/disabled）。
    /// </summary>
    public string Status { get; init; } = "enabled";

    /// <summary>
    /// 是否弱化展示。
    /// </summary>
    public bool IsDimmed { get; init; }

    /// <summary>
    /// 已售数量。
    /// </summary>
    public int SoldCount { get; init; }

    /// <summary>
    /// 使用中数量。
    /// </summary>
    public int ActiveCount { get; init; }

    /// <summary>
    /// 累计收入。
    /// </summary>
    public decimal RevenueAmount { get; init; }

    /// <summary>
    /// 更新时间。
    /// </summary>
    public DateTime UpdatedAt { get; init; }
}
