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

namespace TakeoutSaaS.Domain.Coupons.Entities;

/// <summary>
/// 营销活动配置。
/// </summary>
public sealed class PromotionCampaign : MultiTenantEntityBase
{
    /// <summary>
    /// 活动名称。
    /// </summary>
    public string Name { get; set; } = string.Empty;

    /// <summary>
    /// 活动类型。
    /// </summary>
    public PromotionType PromotionType { get; set; } = PromotionType.Coupon;

    /// <summary>
    /// 活动状态。
    /// </summary>
    public PromotionStatus Status { get; set; } = PromotionStatus.Draft;

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

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

    /// <summary>
    /// 预算金额。
    /// </summary>
    public decimal? Budget { get; set; }

    /// <summary>
    /// 活动规则 JSON。
    /// </summary>
    public string RulesJson { get; set; } = string.Empty;

    /// <summary>
    /// 目标人群描述。
    /// </summary>
    public string? AudienceDescription { get; set; }

    /// <summary>
    /// 营销素材（如 banner）。
    /// </summary>
    public string? BannerUrl { get; set; }
}
