namespace CMSMicroservice.Application.NetworkMembershipCQ.Queries.GetNetworkTree;

/// <summary>
/// DTO برای نمایش درخت دوتایی شبکه
/// </summary>
public class NetworkTreeDto
{
    public long UserId { get; set; }
    public string? Mobile { get; set; }
    public string? FirstName { get; set; }
    public string? LastName { get; set; }
    
    /// <summary>
    /// کد معرف کاربر
    /// </summary>
    public string? ReferralCode { get; set; }
    
    public NetworkLeg? LegPosition { get; set; }
    public int CurrentDepth { get; set; }
    
    /// <summary>
    /// تاریخ فعال‌سازی در باشگاه مشتریان
    /// </summary>
    public DateTime? ClubActivatedAt { get; set; }
    
    /// <summary>
    /// وضعیت فعال بودن در باشگاه مشتریان
    /// </summary>
    public bool IsClubActive { get; set; }
    
    /// <summary>
    /// شماره هفته فعال‌سازی
    /// </summary>
    public long? ActivationWeekDefinitionId { get; set; }
    
    /// <summary>
    /// نام نمایشی هفته فعال‌سازی (مثل: هفته یکم)
    /// </summary>
    public string? ActivationWeekDisplayName { get; set; }
    
    /// <summary>
    /// آیا کاربر در هفته هدف فعال شده است؟
    /// </summary>
    public bool IsActivatedInTargetWeek { get; set; }
    
    /// <summary>
    /// تاریخ ایجاد کاربر
    /// </summary>
    public DateTimeOffset UserCreated { get; set; }

    /// <summary>
    /// آیا فعال‌سازی در هفته هدف اولین بار بوده؟ null = بدون Cycle
    /// </summary>
    public bool? IsNewActivation { get; set; }

    /// <summary>
    /// نام پکیج موثر (هفته هدف یا پکیج فعلی)
    /// </summary>
    public string? PackageName { get; set; }

    public long? PackageId { get; set; }

    /// <summary>تعداد اعضای فعال با پکیج طلایی جاری در پای چپ (stats bar)</summary>
    public int GoldLeftLegTotal { get; set; }

    /// <summary>تعداد اعضای فعال با پکیج طلایی جاری در پای راست (stats bar)</summary>
    public int GoldRightLegTotal { get; set; }

    /// <summary>تعداد اعضای فعال با پکیج نقره‌ای جاری در پای چپ (stats bar)</summary>
    public int SilverLeftLegTotal { get; set; }

    /// <summary>تعداد اعضای فعال با پکیج نقره‌ای جاری در پای راست (stats bar)</summary>
    public int SilverRightLegTotal { get; set; }

    public NetworkTreeDto? LeftChild { get; set; }
    public NetworkTreeDto? RightChild { get; set; }
}
