<?php
// demo.php - Instantiates a temporary demo environment for Team Mania Pro
session_start();

// Reset demo session
$_SESSION = [];
$_SESSION['is_demo'] = true;

// Re-generate session ID to get a clean SQLite file
session_regenerate_id(true);

$db_file = __DIR__ . '/data/demo_' . session_id() . '.sqlite';

// Delete previous file if exists to start fresh
if (file_exists($db_file)) {
    @unlink($db_file);
}

require_once __DIR__ . '/db_schema.php';

try {
    $pdo = new PDO("sqlite:" . $db_file);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo->exec("PRAGMA foreign_keys = ON;");
    
    // Initialize schema tables and settings
    init_database($pdo);

    // Override settings for premium demo experience
    $stmt = $pdo->prepare("UPDATE settings SET value = :val WHERE key = :key");
    $stmt->execute([':val' => 'TSV Blau-Weiß e.V.', ':key' => 'club_name']);
    $stmt->execute([':val' => '#0284c7', ':key' => 'primary_color']); // Sky blue
    $stmt->execute([':val' => '#0f172a', ':key' => 'secondary_color']); // Slate
    $stmt->execute([':val' => 'DEMO-FORUM-UNLOCKED', ':key' => 'forum_license']); // Unlocks forum
    $stmt->execute([':val' => '1', ':key' => 'installed']);
    $stmt->execute([':val' => 'assets/demo_logo.jpg', ':key' => 'logo_path']);

    // Generate hash
    $p_hash = password_hash('demo123', PASSWORD_DEFAULT);

    // Insert demo users
    $users = [
        [1, 'admin', $p_hash, 'admin@tsv-blauweiss.de', 'Anna', 'Admin', 'admin'],
        [2, 'trainer', $p_hash, 'trainer@tsv-blauweiss.de', 'Thomas', 'Trainer', 'trainer'],
        [3, 'vorstand', $p_hash, 'vorstand@tsv-blauweiss.de', 'Volker', 'Vorstand', 'vorstand'],
        [4, 'kassenwart', $p_hash, 'finanzen@tsv-blauweiss.de', 'Karl', 'Kassenwart', 'kassenwart'],
        [5, 'materialwart', $p_hash, 'material@tsv-blauweiss.de', 'Markus', 'Materialwart', 'materialwart'],
        [6, 'mitglied', $p_hash, 'spieler@tsv-blauweiss.de', 'Max', 'Mitglied', 'member'],
    ];

    $stmt = $pdo->prepare("INSERT INTO users (id, username, password_hash, email, first_name, last_name, role) VALUES (?, ?, ?, ?, ?, ?, ?)");
    foreach ($users as $u) {
        $stmt->execute($u);
        // Add override entry
        $pdo->exec("INSERT INTO permissions (user_id) VALUES ({$u[0]})");
    }

    // Insert demo pages/news
    $pages = [
        [
            'slug' => 'startseite',
            'title' => 'Willkommen im Vereinsportal!',
            'content' => '<h2>Herzlich willkommen bei unserem Sportverein!</h2><p>Wir freuen uns, dich in unserem neuen, digitalisierten Vereinsportal begrüßen zu dürfen. Hier kannst du alle Neuigkeiten erfahren, dich im Forum austauschen, Hallen und Trainingsgeräte anfordern oder die Protokolle der Vorstandssitzungen einsehen.</p><h3>Impressionen aus dem Vereinsleben</h3><div class="tm-carousel" style="display: flex; overflow-x: auto; scroll-snap-type: x mandatory; gap: 15px; scroll-behavior: smooth; border-radius: 8px; margin: 20px 0; background: #f8fafc; padding: 15px; border: 1px solid #e2e8f0;"><div style="scroll-snap-align: start; flex-shrink: 0; width: 100%; text-align: center;"><img src="assets/sport_field.jpg" style="max-height: 380px; object-fit: cover; border-radius: 6px; width: 100%;"><p style="font-size: 13px; color: #64748b; margin-top: 8px; font-weight: 500;">Unser Rasenplatz in bestem Zustand für das kommende Heimspiel</p></div><div style="scroll-snap-align: start; flex-shrink: 0; width: 100%; text-align: center;"><img src="assets/sport_track.jpg" style="max-height: 380px; object-fit: cover; border-radius: 6px; width: 100%;"><p style="font-size: 13px; color: #64748b; margin-top: 8px; font-weight: 500;">Die Leichtathletik-Anlage glänzt in der Sommersonne</p></div></div>',
            'user_id' => 1
        ],
        [
            'slug' => 'flutlicht',
            'title' => 'Neues Flutlicht für den Hauptplatz',
            'content' => 'Es ist geschafft! Nach monatelangen Verhandlungen und tatkräftiger Unterstützung durch unsere Sponsoren wurde die neue LED-Flutlichtanlage auf dem Hauptplatz installiert. 

Die Anlage spart bis zu 60% Energiekosten und leuchtet den Platz perfekt aus. Das erste Abendspiel unter neuem Licht findet bereits am kommenden Freitag statt. Kommt vorbei und feuert unsere Mannschaft an!',
            'user_id' => 3
        ],
        [
            'slug' => 'sommerfest',
            'title' => 'Sommerfest 2026 - Helfer gesucht!',
            'content' => 'Am Samstag, den 15. August 2026, findet unser traditionelles Sommerfest statt. Neben dem Spaßturnier für unsere Jugendmannschaften gibt es Grillstationen, kühle Getränke und Live-Musik.

Für den Aufbau am Freitag (14.08.) und den Abbau am Sonntag (16.08.) suchen wir noch dringend helfende Hände aus allen Abteilungen. Bitte tragt euch in die Helferliste beim Vorstand ein oder meldet euch über das Kontaktformular.',
            'user_id' => 3
        ],
        [
            'slug' => 'impressum',
            'title' => 'Impressum',
            'content' => '<h1>Impressum</h1><p>Angaben gemäß § 5 TMG:</p><p>TSV Blau-Weiß e.V.<br>Musterstraße 12<br>12345 Musterstadt</p><p><strong>Vertreten durch:</strong><br>Volker Vorstand (1. Vorsitzender)</p><p><strong>Kontakt:</strong><br>E-Mail: vorstand@tsv-blauweiss.de</p>',
            'user_id' => 1
        ],
        [
            'slug' => 'agb',
            'title' => 'Allgemeine Geschäftsbedingungen (AGB)',
            'content' => '<h1>Allgemeine Geschäftsbedingungen</h1><p>§ 1 Geltungsbereich: Diese AGB gelten für alle Dienstleistungen und Mitgliedschaften des TSV Blau-Weiß e.V.</p><p>§ 2 Mitgliedschaft: Die Anmeldung erfolgt schriftlich oder digital. Die Kündigungsfrist beträgt 3 Monate zum Jahresende.</p><p>§ 3 Beiträge: Die Mitgliedsbeiträge werden vierteljährlich im Voraus per Lastschrift eingezogen.</p>',
            'user_id' => 1
        ],
        [
            'slug' => 'datenschutz',
            'title' => 'Datenschutzerklärung',
            'content' => '<h1>Datenschutzerklärung</h1><p>1. Datenschutz auf einen Blick: Der Schutz Ihrer persönlichen Daten ist uns ein wichtiges Anliegen.</p><p>2. Datenerfassung: Personenbezogene Daten werden nur zur Verwaltung der Mitgliedschaft und zur Organisation des Sportbetriebs erfasst und verarbeitet.</p><p>3. Ihre Rechte: Sie haben das Recht auf Auskunft, Berichtigung und Löschung Ihrer Daten.</p>',
            'user_id' => 1
        ]
    ];
    $stmt = $pdo->prepare("INSERT INTO pages (slug, title, content, updated_by) VALUES (:slug, :title, :content, :user_id)");
    foreach ($pages as $p) {
        $stmt->execute($p);
    }

    // Insert demo transactions (Kassenwart)
    $today = date('Y-m-d');
    $yesterday = date('Y-m-d', strtotime('-1 day'));
    $last_week = date('Y-m-d', strtotime('-7 days'));
    
    $txs = [
        ['income', 1450.00, $last_week, 'Mitgliedsbeiträge Q3 Sammellastschrift', 'Mitgliedsbeiträge', '8400'],
        ['expense', 320.00, $yesterday, 'Kauf neue Jugendtore & Hütchen', 'Materialbeschaffung', '4900'],
        ['income', 500.00, $today, 'Sponsoringzahlung Autohaus Maier', 'Sponsoring', '8400'],
        ['expense', 180.00, $yesterday, 'Platzpflege Kreideschneider', 'Platzmiete', '4900']
    ];
    $stmt = $pdo->prepare("INSERT INTO transactions (type, amount, booking_date, description, category, contra_account) VALUES (?, ?, ?, ?, ?, ?)");
    foreach ($txs as $t) {
        $stmt->execute($t);
    }

    // Insert board protocols
    $stmt = $pdo->prepare("INSERT INTO board_protocols (title, meeting_date, content, author_id) VALUES (?, ?, ?, ?)");
    $stmt->execute([
        'Vorstandssitzung Juli 2026',
        date('Y-m-d', strtotime('-5 days')),
        "TOP 1: Freigabe der Gelder für Platzpflege (180€) beschlossen.\nTOP 2: Festlegung Sommerfest auf den 15.08.2026.\nTOP 3: Erörterung Kooperation mit Diagnostik-Partner - Modul wird im Testlauf freigeschaltet.",
        3
    ]);

    // Insert poll
    $stmt = $pdo->prepare("INSERT INTO polls (question, options, is_active) VALUES (?, ?, ?)");
    $stmt->execute([
        'Welches Essen wünscht ihr euch für das Sommerfest?',
        json_encode(['Klassisches Grillen (Wurst/Fleisch)', 'Burger-Station', 'Veganes/Vegetarisches Buffet', 'Foodtruck (Pizza)']),
        1
    ]);

    // Insert inventory & clothing requests
    $items = [
        ['Spielball Derbystar Bundesliga', 'equipment', 25, 20, ''],
        ['Trainingshütchen Set', 'equipment', 100, 85, ''],
        ['TSV Präsentationsanzug Jako', 'clothing', 50, 32, 'S, M, L, XL, XXL'],
        ['TSV Heimtrikot Blau-Weiß', 'clothing', 40, 18, 'S, M, L, XL']
    ];
    $stmt = $pdo->prepare("INSERT INTO inventory (name, category, total_qty, available_qty, sizes) VALUES (?, ?, ?, ?, ?)");
    foreach ($items as $it) {
        $stmt->execute($it);
    }

    // Request from member (Max Mitglied, id 6)
    $stmt = $pdo->prepare("INSERT INTO clothing_requests (user_id, item_name, size, status, payment_status) VALUES (?, ?, ?, ?, ?)");
    $stmt->execute([6, 'TSV Präsentationsanzug Jako', 'M', 'ready', 'unpaid']);
    $stmt->execute([6, 'TSV Heimtrikot Blau-Weiß', 'L', 'requested', 'unpaid']);

    // Send notifications to member
    $stmt = $pdo->prepare("INSERT INTO notifications (user_id, title, message, is_read) VALUES (?, ?, ?, ?)");
    $stmt->execute([6, 'Ausrüstung abholbereit', 'Dein TSV Präsentationsanzug Jako (Größe: M) liegt abholbereit im Vereinsheim. Bitte bringe 35€ passend mit.', 0]);

    // Private messages
    $stmt = $pdo->prepare("INSERT INTO messages (sender_id, receiver_id, subject, message, is_read) VALUES (?, ?, ?, ?, ?)");
    $stmt->execute([2, 6, 'Kaderaufstellung Samstag', 'Hallo Max, du bist für das Spiel am Samstag im Kader. Treffpunkt ist 13:00 Uhr am Sportplatz. Bring deine blauen Stutzen mit!', 0]);

    // Add default chat rooms
    $stmt = $pdo->prepare("INSERT INTO chat_rooms (id, name, created_by) VALUES (?, ?, ?)");
    $stmt->execute([1, '📣 Allgemein', 1]);
    $stmt->execute([2, '⚽ Kader & Trainer', 1]);
    $stmt->execute([3, '💼 Vorstand & Leitung', 1]);

    // Add chat messages
    $stmt = $pdo->prepare("INSERT INTO chat_messages (room_id, sender_id, message) VALUES (?, ?, ?)");
    $stmt->execute([1, 3, 'Hallo zusammen! Willkommen im neuen TSV Blau-Weiß Vereinsportal!']);
    $stmt->execute([1, 2, 'Servus! Klasse Sache mit der App. Macht die Kaderplanung deutlich einfacher.']);
    $stmt->execute([1, 6, 'Test, klappt super!']);

    // Done. Redirect
    header("Location: index.php?view=login&demo_initialized=1");
    exit;

} catch (PDOException $e) {
    die("Fehler beim Erstellen der Demo-Umgebung: " . $e->getMessage());
}
