namespace Backend.Domain;

public sealed class SiteSettings
{
    public int Id { get; set; }
    public string HostDisplayName { get; set; } = string.Empty;
    public string HostTagline { get; set; } = string.Empty;
    public string HostArtistName { get; set; } = string.Empty;
    public byte[]? HostImageData { get; set; }
    public string? HostImageContentType { get; set; }
    public DateTimeOffset? HostImageUpdatedAt { get; set; }
    public string NewsletterUrl { get; set; } = string.Empty;
    public string ShareXUrl { get; set; } = string.Empty;
    public string ShareDiscordUrl { get; set; } = string.Empty;
    public string PrivacyEmail { get; set; } = string.Empty;
    public string PrivacyPolicyContent { get; set; } = string.Empty;
    public string? PrivacyPolicyUpdatedBy { get; set; }
    public DateTimeOffset? PrivacyPolicyUpdatedAt { get; set; }
    public string ImprintUrl { get; set; } = string.Empty;
    public string ImprintContent { get; set; } = string.Empty;
    public string ContactUrl { get; set; } = string.Empty;
    public string ContactContent { get; set; } = string.Empty;
    public string SponsorsUrl { get; set; } = string.Empty;
    public string SponsorsContent { get; set; } = string.Empty;
    public string ShowactsUrl { get; set; } = string.Empty;
    public string ShowactsContent { get; set; } = string.Empty;
    public string StreamBannerEyebrow { get; set; } = "Das grosse Finale";
    public string StreamBannerTitle { get; set; } = "Award-Show Finale";
    public string StreamBannerText { get; set; } = string.Empty;
    public string StreamBannerLiveButtonLabel { get; set; } = "Jetzt live · Zum Stream";
    public string StreamBannerLiveButtonUrl { get; set; } = string.Empty;
    public string StreamBannerLockedButtonLabel { get; set; } = "Stream noch gesperrt";
    public bool StreamBannerUseCompletedContent { get; set; }
    public string StreamBannerCompletedEyebrow { get; set; } = "Danke fürs Mitfiebern";
    public string StreamBannerCompletedTitle { get; set; } = "Award-Show abgeschlossen";
    public string StreamBannerCompletedText { get; set; } = "Die grosse Award-Show ist vorbei. Danke an alle, die live dabei waren.";
    public string StreamBannerCompletedButtonLabel { get; set; } = "Highlights ansehen";
    public string StreamBannerCompletedButtonUrl { get; set; } = string.Empty;
    public string AwardsSectionTitle { get; set; } = string.Empty;
    public string AwardsSectionDescription { get; set; } = string.Empty;
    public string SubcategoriesSectionTitle { get; set; } = string.Empty;
    public string SubcategoriesSectionDescription { get; set; } = string.Empty;
    public string SocialLinksJson { get; set; } = "[]";
    public string FaqJson { get; set; } = "[]";
    public string RiskRulesJson { get; set; } = "[]";
    public string WorkflowRulesJson { get; set; } = "[]";
    public string TrackingRulesJson { get; set; } = "[]";
    public string ViewerStatsProviderBaseUrl { get; set; } = string.Empty;
    public string TrackingReviewNotes { get; set; } = string.Empty;
    public string NominationLinkBlacklistJson { get; set; } = "[]";
    public bool ClipSubmissionsEnabled { get; set; }
    public bool ClipReviewEnabled { get; set; } = true;
    public bool ClipAdminMenuVisible { get; set; } = true;
    public string ClipSubmissionDisabledMessage { get; set; } = "Clip-Einreichungen sind aktuell geschlossen.";
    public bool ShowactApplicationsEnabled { get; set; }
    public DateOnly? ShowactApplicationStartsAt { get; set; }
    public DateOnly? ShowactApplicationEndsAt { get; set; }
    public string ShowactApplicationDisabledMessage { get; set; } = "Showact-Bewerbungen sind aktuell geschlossen.";
    public string ShowactFormSchemaJson { get; set; } = "[]";
    public bool SponsorsVisible { get; set; } = true;
    public bool DemoLoginManagedByDatabase { get; set; }
    public bool DemoLoginEnabled { get; set; }
    public string DemoLoginEmail { get; set; } = string.Empty;
    public string DemoLoginPasswordHash { get; set; } = string.Empty;
    public string DemoLoginPasswordSalt { get; set; } = string.Empty;
    public string DemoLoginTwitchUserId { get; set; } = "jayuhime_admin";
    public string DemoLoginDisplayName { get; set; } = "Jayuhime Admin";
    public bool TwitchAuthManagedByDatabase { get; set; }
    public string TwitchClientId { get; set; } = string.Empty;
    public string TwitchClientSecret { get; set; } = string.Empty;
    public string TwitchRedirectUri { get; set; } = string.Empty;
    public string TwitchScope { get; set; } = string.Empty;
    public int SessionIdleTimeoutHours { get; set; } = 3;
    public bool MaintenanceModeEnabled { get; set; }
    public string MaintenanceTitle { get; set; } = "Sternenpause";
    public string MaintenanceMessage { get; set; } = "Die Award-Galaxie wird gerade liebevoll poliert. Schau gleich wieder vorbei.";
}
