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

/// <summary>
/// 新客有礼配置 DTO。
/// </summary>
public sealed class NewCustomerSettingsDto
{
    /// <summary>
    /// 门店 ID。
    /// </summary>
    public long StoreId { get; init; }

    /// <summary>
    /// 是否开启新客礼包。
    /// </summary>
    public bool GiftEnabled { get; init; }

    /// <summary>
    /// 礼包类型（coupon/direct）。
    /// </summary>
    public string GiftType { get; init; } = "coupon";

    /// <summary>
    /// 首单直减金额。
    /// </summary>
    public decimal? DirectReduceAmount { get; init; }

    /// <summary>
    /// 首单直减门槛金额。
    /// </summary>
    public decimal? DirectMinimumSpend { get; init; }

    /// <summary>
    /// 是否开启老带新分享。
    /// </summary>
    public bool InviteEnabled { get; init; }

    /// <summary>
    /// 分享渠道。
    /// </summary>
    public IReadOnlyList<string> ShareChannels { get; init; } = [];

    /// <summary>
    /// 新客礼包券列表。
    /// </summary>
    public IReadOnlyList<NewCustomerCouponRuleDto> WelcomeCoupons { get; init; } = [];

    /// <summary>
    /// 邀请人奖励券列表。
    /// </summary>
    public IReadOnlyList<NewCustomerCouponRuleDto> InviterCoupons { get; init; } = [];

    /// <summary>
    /// 被邀请人奖励券列表。
    /// </summary>
    public IReadOnlyList<NewCustomerCouponRuleDto> InviteeCoupons { get; init; } = [];

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