namespace CMSMicroservice.Application.ClubMembershipCQ.Queries.GetClubStatistics;

public class GetClubStatisticsResponseDto
{
    public int TotalMembers { get; set; }
    public int ActiveMembers { get; set; }
    public int InactiveMembers { get; set; }
    public int ExpiredMembers { get; set; }
    public double ActivePercentage { get; set; }
    public List<PackageLevelDistributionModel> PackageDistribution { get; set; } = new();
    public List<MonthlyMembershipTrendModel> MonthlyTrend { get; set; } = new();
    public long TotalRevenue { get; set; }
    public double AverageMembershipDurationDays { get; set; }
    public int ExpiringSoonCount { get; set; }
}

public class PackageLevelDistributionModel
{
    public long PackageId { get; set; }
    public string PackageName { get; set; } = string.Empty;
    public int MemberCount { get; set; }
    public double Percentage { get; set; }
}

public class MonthlyMembershipTrendModel
{
    public string Month { get; set; } = string.Empty;
    public int Activations { get; set; }
    public int Expirations { get; set; }
    public int NetChange { get; set; }
}
