namespace CMSMicroservice.Application.NetworkMembershipCQ.Queries.GetNetworkTree;

/// <summary>
/// Query برای دریافت درخت شبکه از یک کاربر (Binary Tree)
/// </summary>
public record GetNetworkTreeQuery : IRequest<NetworkTreeDto?>
{
    /// <summary>
    /// شناسه کاربر که می‌خواهیم درخت زیرمجموعه او را ببینیم
    /// </summary>
    public long UserId { get; init; }

    /// <summary>
    /// تعداد سطوح (Depth) که می‌خواهیم نمایش دهیم (پیش‌فرض: 3)
    /// </summary>
    public int MaxDepth { get; init; } = 3;

    /// <summary>
    /// فیلتر براساس وضعیت فعال بودن باشگاه مشتریان
    /// </summary>
    public bool? IsClubActive { get; init; }

    /// <summary>
    /// فیلتر براساس شماره هفته فعالسازی (مثال: 2025-W05)
    /// </summary>
    public long? ActivationWeekDefinitionId { get; init; }
}
