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

/// <summary>
/// 满减活动规则 DTO。
/// </summary>
public sealed class FullReductionRulesDto
{
    /// <summary>
    /// 活动类型（reduce/gift/second_half）。
    /// </summary>
    public string ActivityType { get; init; } = "reduce";

    /// <summary>
    /// 满减阶梯。
    /// </summary>
    public IReadOnlyList<FullReductionTierRuleDto> ReduceTiers { get; init; } = [];

    /// <summary>
    /// 满赠规则。
    /// </summary>
    public FullReductionGiftRuleDto? GiftRule { get; init; }

    /// <summary>
    /// 第二份半价规则。
    /// </summary>
    public FullReductionSecondHalfRuleDto? SecondHalfRule { get; init; }

    /// <summary>
    /// 适用渠道。
    /// </summary>
    public IReadOnlyList<string> Channels { get; init; } = [];

    /// <summary>
    /// 门店范围模式（all/stores）。
    /// </summary>
    public string StoreScopeMode { get; init; } = "all";

    /// <summary>
    /// 门店范围 ID。
    /// </summary>
    public IReadOnlyList<long> StoreIds { get; init; } = [];

    /// <summary>
    /// 选品基准门店 ID。
    /// </summary>
    public long ScopeStoreId { get; init; }

    /// <summary>
    /// 是否可叠加优惠券。
    /// </summary>
    public bool StackWithCoupon { get; init; }

    /// <summary>
    /// 活动说明。
    /// </summary>
    public string? Description { get; init; }

    /// <summary>
    /// 统计指标。
    /// </summary>
    public FullReductionMetricsDto Metrics { get; init; } = new();
}
