namespace CMSMicroservice.Application.NetworkMembershipCQ.Queries.GetNetworkTree;

/// <summary>
/// DTO برای نتیجه Flat از Stored Procedure
/// هر ردیف یک نود از درخت است
/// </summary>
public class NetworkTreeNodeDto
{
    public long UserId { get; set; }
    public string? Mobile { get; set; }
    public string? FirstName { get; set; }
    public string? LastName { get; set; }
    public string? ReferralCode { get; set; }
    public int? LegPosition { get; set; }
    public long? ParentId { get; set; }
    public int NetworkLevel { get; set; }
    public DateTime? ClubActivatedAt { get; set; }
    public bool IsClubActive { get; set; }
    public long? ActivationWeekDefinitionId { get; set; }
    public string? ActivationWeekDisplayName { get; set; }
    public bool IsActivatedInTargetWeek { get; set; }
    public DateTimeOffset UserCreated { get; set; }

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

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

    public long? PackageId { get; set; }
    
    /// <summary>
    /// نام کامل کاربر
    /// </summary>
    public string FullName => $"{FirstName} {LastName}".Trim();
}
