namespace CMSMicroservice.Application.NetworkMembershipCQ.Queries.GetNetworkStatistics;

public class GetNetworkStatisticsResponseDto
{
    public int TotalMembers { get; set; }
    public int ActiveMembers { get; set; }
    public int LeftLegCount { get; set; }
    public int RightLegCount { get; set; }
    public double LeftPercentage { get; set; }
    public double RightPercentage { get; set; }
    public double AverageDepth { get; set; }
    public int MaxDepth { get; set; }
    public List<LevelDistributionModel> LevelDistribution { get; set; } = new();
    public List<MonthlyGrowthModel> MonthlyGrowth { get; set; } = new();
    public List<TopNetworkUserModel> TopUsers { get; set; } = new();

    /// <summary>تعداد اعضای فعال باشگاه با پکیج طلایی جاری در پای چپ</summary>
    public int GoldLeftLegTotal { get; set; }
    /// <summary>تعداد اعضای فعال باشگاه با پکیج طلایی جاری در پای راست</summary>
    public int GoldRightLegTotal { get; set; }
    /// <summary>تعداد اعضای فعال باشگاه با پکیج نقره‌ای جاری در پای چپ</summary>
    public int SilverLeftLegTotal { get; set; }
    /// <summary>تعداد اعضای فعال باشگاه با پکیج نقره‌ای جاری در پای راست</summary>
    public int SilverRightLegTotal { get; set; }

    public string WeakerLeg => LeftLegCount <= RightLegCount ? "Left" : "Right";
}

public class LevelDistributionModel
{
    public int Level { get; set; }
    public int Count { get; set; }
}

public class MonthlyGrowthModel
{
    public string Month { get; set; } = string.Empty;
    public int NewMembers { get; set; }
}

public class TopNetworkUserModel
{
    public int Rank { get; set; }
    public long UserId { get; set; }
    public string UserName { get; set; } = string.Empty;
    public int TotalChildren { get; set; }
    public int LeftCount { get; set; }
    public int RightCount { get; set; }
}
