using GmRelay.Shared.Domain;

namespace GmRelay.Shared.Rendering;

public sealed record SessionBatchViewModel(
    string Title,
    IReadOnlyList<SessionViewItem> Sessions);

public sealed record SessionViewItem(
    Guid SessionId,
    DateTime ScheduledAt,
    string Status,
    int? MaxPlayers,
    string JoinLink,
    int ActivePlayerCount,
    IReadOnlyList<PlayerViewItem> ActivePlayers,
    IReadOnlyList<PlayerViewItem> WaitlistedPlayers,
    IReadOnlyList<AvailableAction> AvailableActions);

public sealed record PlayerViewItem(
    string DisplayName,
    string? TelegramUsername,
    string RegistrationStatus);

public sealed record AvailableAction(
    string ActionKey,
    string Label,
    Guid SessionId);
