<?php
require_once __DIR__ . '/../db/config.php';

function awardPoints($username, $pointsToAdd) {
    if (empty($username) || $username === 'Anónimo') {
        return false;
    }

    $db = db();
    
    // Get current points
    $stmt = $db->prepare("SELECT id, points FROM fans WHERE name = ?");
    $stmt->execute([$username]);
    $fan = $stmt->fetch();

    $oldPoints = 0;
    if ($fan) {
        $oldPoints = $fan['points'];
        $newPoints = $oldPoints + $pointsToAdd;
        $db->prepare("UPDATE fans SET points = ? WHERE id = ?")->execute([$newPoints, $fan['id']]);
    } else {
        $newPoints = $pointsToAdd;
        $db->prepare("INSERT INTO fans (name, points) VALUES (?, ?)")->execute([$username, $newPoints]);
    }

    // Check level up
    $milestones = [100, 500, 1000, 2500, 5000, 10000];
    $highestLevelReached = 0;
    $highestThreshold = 0;
    foreach ($milestones as $level => $threshold) {
        if ($oldPoints < $threshold && $newPoints >= $threshold) {
            $highestLevelReached = $level + 1;
            $highestThreshold = $threshold;
        }
    }
    
    if ($highestLevelReached > 0) {
        announceLevelUp($username, $highestLevelReached, $highestThreshold);
    }

    return $newPoints;
}

function awardLoyaltyPoints($username, $pointsToAdd) {
    if (empty($username) || $username === 'Anónimo') {
        return false;
    }

    $db = db();
    
    // Get current loyalty points
    $stmt = $db->prepare("SELECT id, loyalty_points FROM fans WHERE name = ?");
    $stmt->execute([$username]);
    $fan = $stmt->fetch();

    if ($fan) {
        $newPoints = $fan['loyalty_points'] + $pointsToAdd;
        $db->prepare("UPDATE fans SET loyalty_points = ? WHERE id = ?")->execute([$newPoints, $fan['id']]);
    } else {
        $newPoints = $pointsToAdd;
        $db->prepare("INSERT INTO fans (name, loyalty_points) VALUES (?, ?)")->execute([$username, $newPoints]);
    }

    return $newPoints;
}

function getNextLevelInfo($username) {
    $db = db();
    $stmt = $db->prepare("SELECT points FROM fans WHERE name = ?");
    $stmt->execute([$username]);
    $points = $stmt->fetchColumn() ?: 0;

    $milestones = [100, 500, 1000, 2500, 5000, 10000];
    foreach ($milestones as $level => $threshold) {
        if ($points < $threshold) {
            return [
                'next_level' => $level + 1,
                'points_needed' => $threshold - $points,
                'current_points' => $points
            ];
        }
    }
    return null;
}

function announceLevelUp($username, $level, $points) {
    $db = db();
    $messages = [
        "🎉 ¡Increíble! **$username** ha alcanzado el **Nivel $level** con $points puntos. ¡Qué gran fan! 🙌✨",
        "🚀 ¡Subida de nivel! **$username** ya es **Nivel $level** ($points puntos). ¡La comunidad sigue creciendo! 💎",
        "👑 ¡Atención! **$username** ha llegado al **Nivel $level** ($points puntos). ¡Su pasión por la música no tiene límites! 🔥",
        "🌟 ¡Brillante! **$username** acaba de subir al **Nivel $level** ($points puntos). ¡Gracias por ser parte de Lili Records! 🎈"
    ];
    
    if ($level == 6) {
        $messages = [
            "🏆 ¡LEYENDA CONSAGRADA! **$username** ha alcanzado el **NIVEL MÁXIMO (Nivel 6)**. ¡Eres parte de la historia de la radio! 👑🤴✨",
            "👑 ¡EL TRONO ES TUYO! **$username** ha llegado al **Nivel 6**. ¡Nadie tiene más pasión que tú! 🏆🔥",
            "✨ ¡MÁXIMO NIVEL ALCANZADO! **$username** es ahora una **LEYENDA (Nivel 6)**. ¡Gracias por tanto apoyo! 🙌👑"
        ];
    }
    
    $message = $messages[array_rand($messages)];
    
    $ip = $_SERVER['HTTP_CF_CONNECTING_IP'] ?? $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR'] ?? '127.0.0.1';
    $ip = explode(',', $ip)[0];

    $db->prepare("INSERT INTO messages (username, ip_address, message, type) VALUES (?, ?, ?, ?)")
       ->execute(['Lili Bot 🤖', $ip, $message, 'text']);
}

function announceWhatsAppRequest($username, $artist, $song) {
    $db = db();
    $nextLevel = getNextLevelInfo($username);
    
    $levelMsg = "";
    $medal = "";
    
    if ($nextLevel) {
        $needed = $nextLevel['points_needed'];
        $lvl = $nextLevel['next_level'];
        $levelMsg = " 🚀 ¡Solo te faltan **$needed** puntos para el **Nivel $lvl**!";
    } else {
        // User reached max level (Nivel 6)
        $medal = " 👑";
        $levelMsg = " ¡Eres un **Fan Legendario**! 👑✨";
    }

    $messages = [
        "📱 ¡Nueva petición por WhatsApp! **$username$medal** acaba de pedir **$artist - $song**. ¡Marchando! 🤖🎶$levelMsg",
        "✨ ¡Suena el WhatsApp! **$username$medal** quiere escuchar **$artist - $song**. ¡Enseguida la ponemos! 🤖📡$levelMsg",
        "🎧 **$username$medal** nos escribe por WhatsApp para pedir **$artist - $song**. ¡Petición concedida! 🤖🔥$levelMsg",
        "🚀 ¡Petición relámpago! **$username$medal** ha pedido **$artist - $song** vía WhatsApp. ¡Disfrútala! 🤖✨$levelMsg"
    ];
    
    $message = $messages[array_rand($messages)];
    
    $ip = $_SERVER['HTTP_CF_CONNECTING_IP'] ?? $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR'] ?? '127.0.0.1';
    $ip = explode(',', $ip)[0];

    $db->prepare("INSERT INTO messages (username, ip_address, message, type) VALUES (?, ?, ?, ?)")
       ->execute(['Lili Bot 🤖', $ip, $message, 'text']);
}

function announceSongRequest($username, $artist, $song) {
    $db = db();
    $nextLevel = getNextLevelInfo($username);
    
    $levelMsg = "";
    $medal = "";
    
    if ($nextLevel) {
        $needed = $nextLevel['points_needed'];
        $lvl = $nextLevel['next_level'];
        $levelMsg = " 🚀 ¡Estás a **$needed** puntos del **Nivel $lvl**!";
    } else {
        // User reached max level (Nivel 6)
        $medal = " 👑";
        $levelMsg = " ¡Gracias por ser un **Fan Legendario**! 👑✨";
    }

    $messages = [
        "🎵 **$username$medal** ha pedido **$artist - $song**. ¡Gran elección! 🤖✨$levelMsg",
        "🎶 ¡Suena una petición de **$username$medal**! **$artist - $song**. ¡A disfrutar! 🤖🔥$levelMsg",
        "🎸 **$username$medal** quiere escuchar **$artist - $song**. ¡Marchando! 🤖🚀$levelMsg",
        "🎧 ¡Nueva canción pedida por **$username$medal**: **$artist - $song**! 🤖🌟$levelMsg"
    ];
    
    $message = $messages[array_rand($messages)];
    
    $ip = $_SERVER['HTTP_CF_CONNECTING_IP'] ?? $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR'] ?? '127.0.0.1';
    $ip = explode(',', $ip)[0];

    $db->prepare("INSERT INTO messages (username, ip_address, message, type) VALUES (?, ?, ?, ?)")
       ->execute(['Lili Bot 🤖', $ip, $message, 'text']);
}
