using Microsoft.EntityFrameworkCore.Migrations;

#nullable disable

namespace Backend.Migrations;

public partial class SeedApplicationDefaults : Migration
{
    protected override void Up(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.Sql(
            """
            INSERT INTO "SiteSettings" (
                "Id",
                "HostDisplayName",
                "HostTagline",
                "NewsletterUrl",
                "ShareXUrl",
                "ShareDiscordUrl",
                "PrivacyEmail",
                "PrivacyPolicyContent",
                "ImprintUrl",
                "ImprintContent",
                "ContactUrl",
                "ContactContent",
                "SponsorsUrl",
                "SponsorsContent",
                "ShowactsUrl",
                "ShowactsContent",
                "StreamBannerEyebrow",
                "StreamBannerTitle",
                "StreamBannerText",
                "StreamBannerLiveButtonLabel",
                "StreamBannerLiveButtonUrl",
                "StreamBannerLockedButtonLabel",
                "StreamBannerUseCompletedContent",
                "StreamBannerCompletedEyebrow",
                "StreamBannerCompletedTitle",
                "StreamBannerCompletedText",
                "StreamBannerCompletedButtonLabel",
                "StreamBannerCompletedButtonUrl",
                "AwardsSectionTitle",
                "AwardsSectionDescription",
                "SubcategoriesSectionTitle",
                "SubcategoriesSectionDescription",
                "SocialLinksJson",
                "FaqJson",
                "RiskRulesJson",
                "WorkflowRulesJson",
                "TrackingRulesJson",
                "ViewerStatsProviderBaseUrl",
                "TrackingReviewNotes",
                "NominationLinkBlacklistJson",
                "ClipSubmissionsEnabled",
                "ClipReviewEnabled",
                "ClipAdminMenuVisible",
                "ClipSubmissionDisabledMessage",
                "ShowactApplicationsEnabled",
                "ShowactApplicationStartsAt",
                "ShowactApplicationEndsAt",
                "ShowactApplicationDisabledMessage",
                "ShowactFormSchemaJson",
                "SponsorsVisible",
                "DemoLoginManagedByDatabase",
                "DemoLoginEnabled",
                "DemoLoginEmail",
                "DemoLoginPasswordHash",
                "DemoLoginPasswordSalt",
                "DemoLoginTwitchUserId",
                "DemoLoginDisplayName",
                "TwitchAuthManagedByDatabase",
                "TwitchClientId",
                "TwitchClientSecret",
                "TwitchRedirectUri",
                "TwitchScope",
                "SessionIdleTimeoutHours",
                "MaintenanceModeEnabled",
                "MaintenanceTitle",
                "MaintenanceMessage"
            )
            VALUES (
                1,
                'Jayuhime',
                'VTuber Star Awards',
                '',
                'https://x.com/intent/tweet',
                'https://discord.gg/',
                'privacy@example.invalid',
                'Diese lokale Baseline enthaelt nur nicht-geheime Platzhalter. Pflege produktive Datenschutztexte vor dem Go-live im Admin-Panel.',
                '/impressum',
                'Impressumsdaten werden vor dem Go-live im Admin-Panel gepflegt.',
                '/kontakt',
                'Fragen zu den Awards und Partnerschaften koennen ueber die offiziellen Kontaktkanaele gestellt werden.',
                '/sponsoren',
                'Partner und Sponsoren der aktuellen Award-Season.',
                '/showacts',
                'Showact-Bewerbungen fuer das Finale werden hier verwaltet.',
                'Finale live',
                'Die Award-Show startet im Livestream',
                'Wenn das Finale freigeschaltet ist, fuehrt dieser Button zum offiziellen Stream. Der Link wird zentral im Landingpage Stream-Banner gepflegt.',
                'Zum finalen Stream',
                'https://twitch.tv/jayuhime',
                'Stream noch nicht freigegeben',
                TRUE,
                'Finale abgeschlossen',
                'Danke fuer diese Award-Nacht',
                'Die Gewinner:innen bleiben im Archiv sichtbar. Highlights und VODs koennen hier verlinkt werden.',
                'Highlights ansehen',
                '',
                'Award-Kategorien',
                'Die Kategorien bilden Community-Leistung, Content-Qualitaet und besondere Momente der Season ab.',
                'Unterkategorien',
                'Unterkategorien helfen dem Team, Nominierungen sauber zu reviewen und faire Finalfelder zu bauen.',
                '[{"label":"Twitch","url":"https://twitch.tv/jayuhime"},{"label":"Discord","url":"https://discord.gg/"},{"label":"X","url":"https://x.com/"}]',
                '[{"question":"Wann startet die naechste Phase?","answer":"Die aktuellen Termine stehen auf der Landingpage und im Admin-Jahresplan."},{"question":"Wie werden Gewinner:innen bestimmt?","answer":"Nominierungen, Review und Voting laufen phasenweise. Das Team prueft Finalfelder vor der Veroeffentlichung."},{"question":"Wo pflege ich den finalen Stream-Link?","answer":"Der Stream-Link wird zentral im Landingpage Stream-Banner gepflegt."}]',
                '[]',
                '[]',
                '[]',
                'https://twitchtracker.com/api',
                'Automatische TwitchTracker-Werte dienen als Review-Hilfe. Bei fehlenden oder unvollstaendigen Daten entscheidet das Team manuell.',
                '[{"pattern":"localhost","reason":"Lokale Testlinks werden im Review blockiert."},{"pattern":"example.com","reason":"Platzhalterlinks sollen nicht als echte Nominierung freigegeben werden."}]',
                TRUE,
                TRUE,
                TRUE,
                'Clip-Einreichungen sind aktuell geschlossen.',
                TRUE,
                DATE '2026-06-01',
                DATE '2026-08-15',
                'Showact-Bewerbungen sind aktuell geschlossen.',
                '[{"key":"performanceLength","label":"Geplante Laenge","type":"text","required":true},{"key":"contentRating","label":"Content-Hinweise","type":"textarea","required":false}]',
                TRUE,
                FALSE,
                FALSE,
                '',
                '',
                '',
                'jayuhime_admin',
                'Jayuhime Admin',
                FALSE,
                '',
                '',
                '',
                'user:read:email',
                3,
                FALSE,
                'Sternenpause',
                'Die Award-Galaxie wird gerade liebevoll poliert. Schau gleich wieder vorbei.'
            )
            ON CONFLICT ("Id") DO NOTHING;

            SELECT setval(pg_get_serial_sequence('"SiteSettings"', 'Id'), COALESCE((SELECT MAX("Id") FROM "SiteSettings"), 1));
            """
        );
    }

    protected override void Down(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.Sql(
            """
            DELETE FROM "SiteSettings"
            WHERE "Id" = 1
              AND "HostDisplayName" = 'Jayuhime'
              AND "DemoLoginPasswordHash" = ''
              AND "TwitchClientSecret" = '';
            """
        );
    }
}
