using MediatR;
using TakeoutSaaS.Application.App.Members.Dto;

namespace TakeoutSaaS.Application.App.Members.Commands;

/// <summary>
/// 保存会员等级命令。
/// </summary>
public sealed class SaveMemberTierCommand : IRequest<MemberTierDetailDto>
{
    /// <summary>
    /// 等级标识（为空时新增）。
    /// </summary>
    public long? TierId { get; init; }

    /// <summary>
    /// 排序序号。
    /// </summary>
    public int SortOrder { get; init; }

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

    /// <summary>
    /// 图标键。
    /// </summary>
    public string IconKey { get; init; } = "user";

    /// <summary>
    /// 主题色。
    /// </summary>
    public string ColorHex { get; init; } = "#999999";

    /// <summary>
    /// 是否默认等级。
    /// </summary>
    public bool IsDefault { get; init; }

    /// <summary>
    /// 升降级规则。
    /// </summary>
    public MemberTierRuleDto Rule { get; init; } = new();

    /// <summary>
    /// 等级权益。
    /// </summary>
    public MemberTierBenefitsDto Benefits { get; init; } = new();
}
