namespace ChessCubing.Server.Users;

public sealed class UserProfileResponse
{
    public string Subject { get; init; } = string.Empty;

    public string Username { get; init; } = string.Empty;

    public string? Email { get; init; }

    public string DisplayName { get; init; } = string.Empty;

    public string? Club { get; init; }

    public string? City { get; init; }

    public string? PreferredFormat { get; init; }

    public string? FavoriteCube { get; init; }

    public string? Bio { get; init; }

    public DateTime CreatedUtc { get; init; }

    public DateTime UpdatedUtc { get; init; }
}

public sealed class UpdateUserProfileRequest
{
    public string? DisplayName { get; init; }

    public string? Club { get; init; }

    public string? City { get; init; }

    public string? PreferredFormat { get; init; }

    public string? FavoriteCube { get; init; }

    public string? Bio { get; init; }
}

public sealed class UserProfileValidationException(string message) : Exception(message);
