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."; }