b53c7fb736
Features: - Category viewer ranges + subcategory templates (admin group modal, tree workspace) - Nomination enrichment via TwitchTracker API (NominationEnrichmentService, TwitchTrackerViewerStatsProvider) with admin tracking rules editor - Nomination group tracker: CategoryGroupName as primary identifier, CategoryId stays as nullable legacy field; StreamerIdentity table - Dynamic showact application form builder (AdminShowactFormBuilder, ShowactApplicationSchedule) - Session idle timeout setting (AdminSessionTimeoutCard) - Share URLs for X and Discord (SiteSettings, public extras) - Workflow rules now stored per season (falls back to global SiteSettings) - New admin routes: settings/access, settings/workflows, tracking-rules - New admin review workspace with subcategory tabs - AdminCategoriesView rebuilt with group/subcategory modals Migrations (all additive): - AddShareUrls, AddShowactDynamicForm, AddCategoryViewerRanges, AddSessionIdleTimeoutSettings, AddSeasonSubcategoryTemplates, AddNominationGroupTrackerIdentity, AddShowactApplicationSchedule, AddSeasonWorkflowRulesJson Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
58 lines
3.3 KiB
C#
58 lines
3.3 KiB
C#
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 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 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.";
|
|
}
|