<?php
/**
 * TechShop Perú - API: Alerta de Bajada de Precio (Mejora 17)
 */
define('SECURE_ACCESS', true);
header('Content-Type: application/json; charset=utf-8');

require_once __DIR__ . '/../includes/config.php';
require_once __DIR__ . '/../includes/database.php';
require_once __DIR__ . '/../includes/functions.php';

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    echo json_encode(['success' => false, 'message' => 'Método no permitido']);
    exit;
}

if (!csrf_verify()) {
    echo json_encode(['success' => false, 'message' => 'Token de seguridad inválido. Recarga la página e inténtalo de nuevo.']);
    exit;
}

$producto_id = (int)($_POST['producto_id'] ?? 0);
$email = trim($_POST['email'] ?? '');

if ($producto_id <= 0 || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo json_encode(['success' => false, 'message' => 'Datos inválidos. Verifica el email.']);
    exit;
}

try {
    $db = db();

    // Crear tabla si no existe
    $db->exec("CREATE TABLE IF NOT EXISTS alertas_precio (
        id INT AUTO_INCREMENT PRIMARY KEY,
        producto_id INT NOT NULL,
        email VARCHAR(255) NOT NULL,
        creado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        notificado TINYINT(1) DEFAULT 0,
        UNIQUE KEY uk_prod_email (producto_id, email),
        KEY idx_notificado (notificado)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");

    // Verificar que el producto existe
    $stmt = $db->prepare('SELECT nombre FROM productos WHERE id = ? AND activo = 1');
    $stmt->execute([$producto_id]);
    $prod = $stmt->fetch();
    if (!$prod) {
        echo json_encode(['success' => false, 'message' => 'Producto no encontrado']);
        exit;
    }

    // Insertar o ignorar si ya existe
    $db->prepare('INSERT IGNORE INTO alertas_precio (producto_id, email) VALUES (?, ?)')->execute([$producto_id, $email]);

    echo json_encode([
        'success' => true,
        'message' => '✅ ¡Listo! Te avisaremos cuando "' . e($prod['nombre']) . '" baje de precio.'
    ]);

} catch (Exception $e) {
    echo json_encode(['success' => false, 'message' => 'Error al registrar la alerta.']);
}
