<?php
/**
 * 🚨 KRIITILISELT PARANDATUD Saavutuste definitsioonid
 * Estreka Ratsaklubi - athlete/includes/achievements_data.php
 * 
 * ✅ PLACEMENT SÜSTEEM TÄIELIKULT PARANDATUD
 * ✅ POINTS_15 ACHIEVEMENT PARANDATUD
 * ✅ KÕIK TARGET VEAD LAHENDATUD
 */

// Kõik võimalikud saavutused süsteemis
$ACHIEVEMENTS = [
    // ✅ Algaja saavutused (jäävad samaks)
    'first_start' => [
        'name' => 'Esimene samm',
        'description' => 'Sisestasid oma esimese tulemuse',
        'icon' => '🥉',
        'category' => 'beginner',
        'check_function' => 'hasResults',
        'target' => 1,
        'rarity' => 'common',
        'points_reward' => 1
    ],
    
    'first_finish' => [
        'name' => 'Debütant',
        'description' => 'Lõpetasid oma esimese võistluse edukalt',
        'icon' => '✅',
        'category' => 'beginner',
        'check_function' => 'hasFinishedResults',
        'target' => 1,
        'rarity' => 'common',
        'points_reward' => 1
    ],
    
    // ✅ Punktide saavutused (jäävad samaks)
    'points_5' => [
        'name' => '5+',
        'description' => 'Saavutasid ühe võistluse eest 5+ punkti',
        'icon' => '⭐',
        'category' => 'points',
        'check_function' => 'maxPointsReached',
        'target' => 5,
        'rarity' => 'uncommon',
        'points_reward' => 3
    ],
    
    'points_10' => [
        'name' => '10+',
        'description' => 'Saavutasid ühe võistluse eest üle 10 punkti',
        'icon' => '🌟',
        'category' => 'points',
        'check_function' => 'maxPointsReached',
        'target' => 10,
        'rarity' => 'uncommon',
        'points_reward' => 5
    ],
    
    // 🚨 KRIITILISELT PARANDATUD - points_15 achievement
    'points_15' => [
        'name' => 'Korduvalt tipus',
        'description' => 'Saavutasid 3 korda TOP 5 koha',
        'icon' => '💫',
        'category' => 'placement',
        'check_function' => 'bestPlacementCount', // ✅ PARANDATUD: oli maxPointsReached
        'target' => 3, // 3 korda TOP 5
        'placement_limit' => 5, // ✅ LISATUD: TOP 5 määratlus
        'rarity' => 'rare',
        'points_reward' => 8
    ],
    
    'finished_10' => [
        'name' => '10 lõpetatud',
        'description' => 'Lõpetasid 10 võistlust edukalt hooaja jooksul',
        'icon' => '💪',
        'category' => 'consistency',
        'check_function' => 'finishedCount',
        'target' => 10,
        'rarity' => 'rare',
        'points_reward' => 8
    ],
    
    'points_20' => [
        'name' => 'Meister',
        'description' => 'Saavutas TOP 5 kõigis 3 distsipliinis',
        'icon' => '👑',
        'category' => 'special',
        'check_function' => 'top5InAllDisciplines',
        'target' => 3, // kõik 3 distsipliini
        'rarity' => 'legendary',
        'points_reward' => 15
    ],
    
    // 🚨 KRIITILISELT PARANDATUD - PLACEMENT SÜSTEEM
    'top10_reached' => [
        'name' => 'TOP 10',
        'description' => 'Saavutasid TOP 10 koha võistlusel',
        'icon' => '🎯',
        'category' => 'placement',
        'check_function' => 'bestPlacement',
        'target' => 10, // ✅ PARANDATUD: kui placement <= 10, saavutus
        'rarity' => 'common',
        'points_reward' => 2
    ],
    
    'top5_reached' => [
        'name' => 'TOP 5',
        'description' => 'Saavutasid TOP 5 koha võistlusel',
        'icon' => '🏆',
        'category' => 'placement',
        'check_function' => 'bestPlacement',
        'target' => 5, // ✅ PARANDATUD: kui placement <= 5, saavutus
        'rarity' => 'uncommon',
        'points_reward' => 5
    ],
    
    'top3_reached' => [
        'name' => 'Poodiumil',
        'description' => 'Saavutasid TOP 3 koha võistlusel',
        'icon' => '🥉',
        'category' => 'placement',
        'check_function' => 'bestPlacement',
        'target' => 3, // ✅ PARANDATUD: kui placement <= 3, saavutus
        'rarity' => 'rare',
        'points_reward' => 8
    ],
    
    'first_place' => [
        'name' => 'Võitja',
        'description' => 'Võitsid võistluse (1. koht)',
        'icon' => '🥇',
        'category' => 'placement',
        'check_function' => 'bestPlacement',
        'target' => 1, // ✅ PARANDATUD: kui placement <= 1, saavutus
        'rarity' => 'legendary',
        'points_reward' => 15
    ],
    
    // ✅ Järjekindluse saavutused (jäävad samaks)
    'streak_3' => [
        'name' => 'Järjekindel',
        'description' => 'Lõpetasid 3 võistlust järjest edukalt',
        'icon' => '🔥',
        'category' => 'consistency',
        'check_function' => 'longestStreak',
        'target' => 3,
        'rarity' => 'uncommon',
        'points_reward' => 3
    ],
    
    'streak_5' => [
        'name' => 'Ülistabiilne',
        'description' => 'Lõpetasid 5 võistlust järjest edukalt',
        'icon' => '🔥🔥',
        'category' => 'consistency',
        'check_function' => 'longestStreak',
        'target' => 5,
        'rarity' => 'rare',
        'points_reward' => 8
    ],
    
    'streak_10' => [
        'name' => 'Peatamatu',
        'description' => 'Lõpetasid 10 võistlust järjest edukalt',
        'icon' => '🔥🔥🔥',
        'category' => 'consistency',
        'check_function' => 'longestStreak',
        'target' => 10,
        'rarity' => 'legendary',
        'points_reward' => 20
    ],
    
    // ✅ Mitmekülgsuse saavutused (jäävad samaks)
    'tried_dressage' => [
        'name' => 'Koolisõitja',
        'description' => 'Proovised koolisõitu',
        'icon' => '🎭',
        'category' => 'diversity',
        'check_function' => 'triedDiscipline',
        'target' => 1,
        'discipline' => 'koolisoit',
        'rarity' => 'common',
        'points_reward' => 2
    ],
    
    'tried_jumping' => [
        'name' => 'Takistussõitja',
        'description' => 'Proovised takistussõitu',
        'icon' => '🚀',
        'category' => 'diversity',
        'check_function' => 'triedDiscipline',
        'target' => 1,
        'discipline' => 'takistussoit',
        'rarity' => 'common',
        'points_reward' => 2
    ],
    
    'tried_endurance' => [
        'name' => 'Kestvusratsutaja',
        'description' => 'Proovised kestvusratsutamist',
        'icon' => '🏃',
        'category' => 'diversity',
        'check_function' => 'triedDiscipline',
        'target' => 1,
        'discipline' => 'kestvusratsutamine',
        'rarity' => 'common',
        'points_reward' => 2
    ],
    
    'multi_discipline' => [
        'name' => 'Mitmekülgne',
        'description' => 'Proovised kõiki 3 distsipliini',
        'icon' => '🌟',
        'category' => 'diversity',
        'check_function' => 'disciplinesCount',
        'target' => 3,
        'rarity' => 'rare',
        'points_reward' => 10
    ],
    
    // ✅ Aktiivsuse saavutused
    'active_month' => [
        'name' => 'Võistleja',
        'description' => 'Osalesid 2+ võistlusel ühes kuus',
        'icon' => '📅',
        'category' => 'activity',
        'check_function' => 'monthlyStarts',
        'target' => 2,
        'rarity' => 'common',
        'points_reward' => 3
    ],
    
    'season_warrior' => [
        'name' => 'Aktivist',
        'description' => 'Osalesid 10+ võistlusel hooaja jooksul',
        'icon' => '⚔️',
        'category' => 'activity',
        'check_function' => 'seasonStarts',
        'target' => 10,
        'rarity' => 'uncommon',
        'points_reward' => 5
    ],
    
    'season_hero' => [
        'name' => 'Hüperaktiivne',
        'description' => 'Osalesid 15+ võistlusel hooaja jooksul',
        'icon' => '🦸',
        'category' => 'activity',
        'check_function' => 'seasonStarts',
        'target' => 15,
        'rarity' => 'rare',
        'points_reward' => 10
    ],
    
    'season_legend' => [
        'name' => 'Legend',
        'description' => 'Osalesid 20+ võistlusel hooaja jooksul',
        'icon' => '👑',
        'category' => 'activity',
        'check_function' => 'seasonStarts',
        'target' => 20,
        'rarity' => 'legendary',
        'points_reward' => 20
    ],
    
    // ✅ Treeningu saavutused
    'training_enthusiast' => [
        'name' => 'Treeningu entusiast',
        'description' => 'Märkisid üles 10+ treeningu',
        'icon' => '💪',
        'category' => 'training',
        'check_function' => 'totalTrainings',
        'target' => 10,
        'rarity' => 'common',
        'points_reward' => 3
    ],
    
    'training_master' => [
        'name' => 'Tööloom',
        'description' => 'Treenisid 20+ korda ühes kuus',
        'icon' => '🏋️',
        'category' => 'training',
        'check_function' => 'monthlyTrainings',
        'target' => 20,
        'rarity' => 'rare',
        'points_reward' => 8
    ],
    
    'happy_trainer' => [
        'name' => 'Rahulolev õpilane',
        'description' => 'Sinu keskmine treeningu meeleolu on 4.5+',
        'icon' => '😊',
        'category' => 'training',
        'check_function' => 'averageMood',
        'target' => 4.5,
        'rarity' => 'uncommon',
        'points_reward' => 5
    ],
    
    // ✅ Erilised saavutused
    'perfectionist' => [
        'name' => 'Perfektsionist',
        'description' => 'Lõpetasid kõik võistlused edukalt (100%)',
        'icon' => '💯',
        'category' => 'special',
        'check_function' => 'perfectFinishRate',
        'target' => 100,
        'rarity' => 'legendary',
        'points_reward' => 25
    ],
    
    'improvement_star' => [
        'name' => 'Arenguhüpe',
        'description' => 'Parandasid oma keskmist 50%+ võrreldes eelmise kuuga',
        'icon' => '📈',
        'category' => 'special',
        'check_function' => 'monthlyImprovement',
        'target' => 50,
        'rarity' => 'rare',
        'points_reward' => 10
    ],
    
    'early_bird' => [
        'name' => 'Varajane lind',
        'description' => 'Registreerusid süsteemi esimese 20 kasutaja seas',
        'icon' => '🐦',
        'category' => 'special',
        'check_function' => 'earlyUser',
        'target' => 20,
        'rarity' => 'legendary',
        'points_reward' => 25
    ]
];

// ✅ Kategooriate kirjeldused (jäävad samaks)
$ACHIEVEMENT_CATEGORIES = [
    'beginner' => [
        'name' => 'Algaja sammud',
        'description' => 'Esimesed saavutused ratsspordi teel',
        'color' => '#10B981'
    ],
    'points' => [
        'name' => 'Punktide kogumine',
        'description' => 'Kõrged punktisummad võistlustel',
        'color' => '#3B82F6'
    ],
    'placement' => [
        'name' => 'Kohtade saavutamine',
        'description' => 'Edukad kohad võistlustel',
        'color' => '#F59E0B'
    ],
    'consistency' => [
        'name' => 'Järjekindlus',
        'description' => 'Stabiilsed tulemused ja seeriad',
        'color' => '#EF4444'
    ],
    'diversity' => [
        'name' => 'Mitmekülgsus',
        'description' => 'Erinevate distsipliinide proovimine',
        'color' => '#8B5CF6'
    ],
    'activity' => [
        'name' => 'Aktiivsus',
        'description' => 'Sage osalemine võistlustel',
        'color' => '#06B6D4'
    ],
    'training' => [
        'name' => 'Treening',
        'description' => 'Treeningu järjepidevus ja kvaliteet',
        'color' => '#84CC16'
    ],
    'special' => [
        'name' => 'Erilised saavutused',
        'description' => 'Haruldased ja ainulaadsed saavutused',
        'color' => '#EC4899'
    ]
];

// ✅ Rarity tasemed (jäävad samaks)
$ACHIEVEMENT_RARITY = [
    'common' => [
        'name' => 'Tavaline',
        'color' => '#6B7280',
        'glow' => false,
        'points_range' => '1-3 punkti'
    ],
    'uncommon' => [
        'name' => 'Haruldane',
        'color' => '#10B981',
        'glow' => false,
        'points_range' => '3-5 punkti'
    ],
    'rare' => [
        'name' => 'Harv',
        'color' => '#3B82F6',
        'glow' => true,
        'points_range' => '8-10 punkti'
    ],
    'legendary' => [
        'name' => 'Legendaarne',
        'color' => '#F59E0B',
        'glow' => true,
        'points_range' => '15-25 punkti'
    ]
];

/**
 * Saab saavutuse andmed
 */
function getAchievementData($achievement_key) {
    global $ACHIEVEMENTS;
    return $ACHIEVEMENTS[$achievement_key] ?? null;
}

/**
 * Saab kategooria andmed
 */
function getCategoryData($category_key) {
    global $ACHIEVEMENT_CATEGORIES;
    return $ACHIEVEMENT_CATEGORIES[$category_key] ?? null;
}

/**
 * Saab rarity andmed
 */
function getRarityData($rarity_key) {
    global $ACHIEVEMENT_RARITY;
    return $ACHIEVEMENT_RARITY[$rarity_key] ?? null;
}

/**
 * Filtreerib saavutused kategooria järgi
 */
function getAchievementsByCategory($category) {
    global $ACHIEVEMENTS;
    return array_filter($ACHIEVEMENTS, function($achievement) use ($category) {
        return $achievement['category'] === $category;
    });
}

/**
 * Saab kõik kategooriad
 */
function getAllCategories() {
    global $ACHIEVEMENT_CATEGORIES;
    return $ACHIEVEMENT_CATEGORIES;
}

/**
 * Formateerib saavutuse nime ikooni ja nimega
 */
function formatAchievementName($achievement_key) {
    $achievement = getAchievementData($achievement_key);
    if (!$achievement) return $achievement_key;
    
    return $achievement['icon'] . ' ' . $achievement['name'];
}

/**
 * Kontrollib kas saavutus on haruldane (glow efekt)
 */
function isRareAchievement($achievement_key) {
    $achievement = getAchievementData($achievement_key);
    if (!$achievement) return false;
    
    $rarity = getRarityData($achievement['rarity']);
    return $rarity['glow'] ?? false;
}

/**
 * Saab kõigi saavutuste kogupunktide arvu
 */
function getTotalAvailablePoints() {
    global $ACHIEVEMENTS;
    return array_sum(array_column($ACHIEVEMENTS, 'points_reward'));
}

/**
 * Statistika funktsioonid
 */
function getAchievementStats() {
    global $ACHIEVEMENTS;
    
    $stats = [
        'total_achievements' => count($ACHIEVEMENTS),
        'total_points' => getTotalAvailablePoints(),
        'by_category' => [],
        'by_rarity' => []
    ];
    
    foreach ($ACHIEVEMENTS as $achievement) {
        $category = $achievement['category'];
        $rarity = $achievement['rarity'];
        
        $stats['by_category'][$category] = ($stats['by_category'][$category] ?? 0) + 1;
        $stats['by_rarity'][$rarity] = ($stats['by_rarity'][$rarity] ?? 0) + 1;
    }
    
    return $stats;
}
?>