namespace Application.Features.Admin.Member.List.Search;

public sealed class Response
{
    public int Total { get; init; }
    public required TabCounts Counts { get; init; }

    public sealed class TabCounts
    {
        public int All { get; init; }
        public int Denied { get; init; }
        public int Withdraw { get; init; }
        public int Admin { get; init; }
    }

    public required IReadOnlyList<Row> List { get; init; }

    public sealed class Row
    {
        public int Num { get; init; }
        public int ID { get; init; }
        public required string Email { get; init; }
        public string? Name { get; init; }
        public string? FullName { get; init; }
        public string? Icon { get; init; }
        public string? Phone { get; init; }
        public string? Birthday { get; init; }
        public string? Gender { get; init; }
        public string? GradeName { get; init; }
        public bool IsEmailVerified { get; init; }
        public bool IsAuthCertified { get; init; }
        public bool IsDenied { get; init; }
        public bool IsWithdraw { get; init; }
        public long Following { get; init; }
        public long Followed { get; init; }
        public DateTime? LastLoginAt { get; init; }
        public string? LastLoginIp { get; init; }
        public DateTime? UpdatedAt { get; init; }
        public required DateTime CreatedAt { get; init; }
    }
}