<?php
/**
 * TechShop Peru - API: Toggle favoritos
 * 
 * POST: producto_id, csrf_token
 * Requiere autenticacion
 * 
 * @package TechShop Peru
 * @version 1.0
 */

define('SECURE_ACCESS', true);
require_once __DIR__ . '/../includes/config.php';
require_once __DIR__ . '/../includes/database.php';
require_once __DIR__ . '/../includes/functions.php';

header('Content-Type: application/json; charset=utf-8');

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

if (!csrf_verify()) {
    echo json_encode(['success' => false, 'message' => 'Token de seguridad invalido.']);
    exit;
}

if (!is_logged_in()) {
    echo json_encode(['success' => false, 'message' => 'Debes iniciar sesion para guardar favoritos.']);
    exit;
}

try {
    $db = db();
    $db->exec("CREATE TABLE IF NOT EXISTS favoritos (
        id INT AUTO_INCREMENT PRIMARY KEY,
        usuario_id INT NOT NULL,
        producto_id INT NOT NULL,
        fecha_creacion DATETIME DEFAULT CURRENT_TIMESTAMP,
        UNIQUE KEY user_prod (usuario_id, producto_id),
        KEY (usuario_id),
        KEY (producto_id)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");

    $usuario_id = (int) $_SESSION['usuario_id'];
    $producto_id = isset($_POST['producto_id']) ? (int) $_POST['producto_id'] : 0;

    if ($producto_id <= 0) {
        echo json_encode(['success' => false, 'message' => 'Producto no especificado.']);
        exit;
    }

    $stmt = $db->prepare('SELECT id FROM productos WHERE id = ? AND activo = 1');
    $stmt->execute([$producto_id]);
    if (!$stmt->fetch()) {
        echo json_encode(['success' => false, 'message' => 'El producto no existe o no esta disponible.']);
        exit;
    }

    $stmt = $db->prepare('SELECT id FROM favoritos WHERE usuario_id = ? AND producto_id = ?');
    $stmt->execute([$usuario_id, $producto_id]);
    $favorito = $stmt->fetch();

    if ($favorito) {
        $stmt = $db->prepare('DELETE FROM favoritos WHERE id = ?');
        $stmt->execute([$favorito['id']]);
        echo json_encode(['success' => true, 'is_favorite' => false, 'message' => 'Quitado de favoritos.']);
    } else {
        $stmt = $db->prepare('INSERT INTO favoritos (usuario_id, producto_id) VALUES (?, ?)');
        $stmt->execute([$usuario_id, $producto_id]);
        echo json_encode(['success' => true, 'is_favorite' => true, 'message' => 'Agregado a favoritos.']);
    }

} catch (PDOException $e) {
    if (DEBUG_MODE) error_log('Error favorite-toggle: ' . $e->getMessage());
    echo json_encode(['success' => false, 'message' => 'Error al actualizar favoritos.']);
}
