namespace Backend.Contracts;

public sealed record TimelineItem(
    string Key,
    string Title,
    DateOnly StartsAt,
    DateOnly EndsAt,
    string State);

public sealed record FeaturedCategoryDto(
    int Id,
    string GroupName,
    string Name,
    string Description,
    int MaxNomineesPerUser);

public sealed record WinnerPreviewDto(
    int Year,
    string Category,
    string WinnerName,
    string WinnerSlug,
    string WinnerPlatform,
    string WinnerUrl);

public sealed record ArchiveYearDto(
    int Year,
    int WinnerCount);

public sealed record FaqItemDto(string Question, string Answer);

public sealed record PublicSocialLinkDto(
    string Label,
    string Platform,
    string Url,
    string? Icon = null,
    bool ShowOnHost = true,
    bool ShowOnCommunity = true);

public sealed record FooterLinkDto(
    string Key,
    string Label,
    string Url,
    string Content);

public sealed record PublicSiteContentDto(
    string HostDisplayName,
    string HostTagline,
    string NewsletterUrl,
    string PrivacyEmail,
    string PrivacyPolicyContent,
    IEnumerable<PublicSocialLinkDto> SocialLinks,
    IEnumerable<FooterLinkDto> FooterLinks);

public sealed record PublicSiteStatusResponse(
    bool DemoLoginEnabled,
    bool MaintenanceModeEnabled,
    string MaintenanceTitle,
    string MaintenanceMessage);

public sealed record OverviewResponse(
    int SeasonId,
    int Year,
    string Title,
    DateOnly ShowDate,
    TimeOnly ShowStartsAt,
    string ShowStreamUrl,
    string CurrentPhase,
    bool IsCommunityOnly,
    string LoginProvider,
    IEnumerable<TimelineItem> Timeline,
    IEnumerable<FeaturedCategoryDto> FeaturedCategories,
    IEnumerable<WinnerPreviewDto> WinnersPreview,
    IEnumerable<ArchiveYearDto> ArchiveYears,
    PublicSiteContentDto SiteContent,
    IEnumerable<FaqItemDto> Faq);
