<?php
/**
 * Multi-day võistluste migratsiooniskript
 * Käivita kord: php migration_multiday.php
 */

require_once 'config/config.php';
require_once 'config/database.php';

echo "🗓️ Alustame multi-day võistluste migratsiooni...\n\n";

try {
    // 1. KONTROLLI ja LISA puuduvad väljad competitions tabelisse
    echo "1. Kontrollime competitions tabeli struktuuri...\n";
    
    $existing_comp_columns = [];
    $stmt = $pdo->prepare("PRAGMA table_info(competitions)");
    $stmt->execute();
    $comp_columns = $stmt->fetchAll();
    foreach ($comp_columns as $column) {
        $existing_comp_columns[] = $column['name'];
    }
    
    // Lisa puuduvad multi-day väljad
    $required_comp_columns = [
        'start_date' => 'DATE',
        'end_date' => 'DATE', 
        'is_multi_day' => 'BOOLEAN DEFAULT FALSE'
    ];
    
    foreach ($required_comp_columns as $col_name => $col_type) {
        if (!in_array($col_name, $existing_comp_columns)) {
            $pdo->exec("ALTER TABLE competitions ADD COLUMN {$col_name} {$col_type}");
            echo "   ✅ Lisatud veerg: {$col_name}\n";
        } else {
            echo "   ⏭️ Veerg juba olemas: {$col_name}\n";
        }
    }
    
    // 2. MIGREERI olemasolevad andmed
    echo "\n2. Migreerime olemasolevad võistlused...\n";
    
    $stmt = $pdo->prepare("
        UPDATE competitions 
        SET start_date = date, 
            end_date = date, 
            is_multi_day = FALSE 
        WHERE start_date IS NULL OR end_date IS NULL
    ");
    $affected = $stmt->execute();
    $rowCount = $stmt->rowCount();
    
    echo "   ✅ Migreeritud {$rowCount} võistlust\n";
    
    // 3. KONTROLLI results tabeli väljad (kui vaja)
    echo "\n3. Kontrollime results tabeli struktuuri...\n";
    
    $existing_result_columns = [];
    $stmt = $pdo->prepare("PRAGMA table_info(results)");
    $stmt->execute();
    $result_columns = $stmt->fetchAll();
    foreach ($result_columns as $column) {
        $existing_result_columns[] = $column['name'];
    }
    
    // Lisa puuduvad väljad results tabelisse (kui vaja)
    $required_result_columns = [
        'height' => 'INTEGER',
        'time_seconds' => 'INTEGER', 
        'pulse' => 'INTEGER'
    ];
    
    foreach ($required_result_columns as $col_name => $col_type) {
        if (!in_array($col_name, $existing_result_columns)) {
            $pdo->exec("ALTER TABLE results ADD COLUMN {$col_name} {$col_type}");
            echo "   ✅ Lisatud veerg results tabelisse: {$col_name}\n";
        } else {
            echo "   ⏭️ Veerg juba olemas: {$col_name}\n";
        }
    }
    
    // 4. UUENDA indeksid
    echo "\n4. Uuendame indeksid...\n";
    
    $pdo->exec("CREATE INDEX IF NOT EXISTS idx_competitions_start_date ON competitions(start_date)");
    echo "   ✅ Lisatud indeks: idx_competitions_start_date\n";
    
    $pdo->exec("CREATE INDEX IF NOT EXISTS idx_competitions_end_date ON competitions(end_date)");
    echo "   ✅ Lisatud indeks: idx_competitions_end_date\n";
    
    // 5. TESTI migratsioon
    echo "\n5. Testima migratsiooni...\n";
    
    $stmt = $pdo->prepare("
        SELECT COUNT(*) as total,
               COUNT(CASE WHEN start_date IS NOT NULL THEN 1 END) as with_start_date,
               COUNT(CASE WHEN is_multi_day = 1 THEN 1 END) as multi_day_count
        FROM competitions
    ");
    $stmt->execute();
    $stats = $stmt->fetch();
    
    echo "   📊 Statistika:\n";
    echo "      - Kokku võistlusi: {$stats['total']}\n";
    echo "      - Start_date määratud: {$stats['with_start_date']}\n";
    echo "      - Multi-day võistlusi: {$stats['multi_day_count']}\n";
    
    if ($stats['total'] === $stats['with_start_date']) {
        echo "   ✅ Kõik võistlused on edukalt migreeritud!\n";
    } else {
        echo "   ⚠️ Mõned võistlused vajasid lisatööd\n";
    }
    
    echo "\n🎉 Multi-day migratsioon LÕPETATUD!\n";
    echo "\nNüüd saad:\n";
    echo "- ✅ Luua single-day võistlusi (nagu varem)\n";
    echo "- ✅ Luua multi-day võistlusi (uus funktsioon)\n";
    echo "- ✅ Kõik olemasolevad andmed töötavad\n";
    echo "- ✅ Sportlased saavad luua võistlusi\n\n";
    
} catch(Exception $e) {
    echo "\n❌ VIGA migratsioonis: " . $e->getMessage() . "\n";
    echo "Palun kontrolli andmebaasi ühendust ja proovi uuesti.\n";
    exit(1);
}
?>