<?php
session_start();
header('Content-Type: application/json');

// Verificar que el usuario esté autenticado
if (!isset($_SESSION['usuario']) || !isset($_SESSION['token'])) {
    http_response_code(401);
    echo json_encode(['error' => 'No autorizado']);
    exit;
}

// ✅ API KEY SEGURA EN EL SERVIDOR
$GEMINI_API_KEY = 'AIzaSyCfH7AALMipoCROS13PQcVl6D-j34ONFB0';
// ✅ CORREGIDO: Usar el modelo correcto de la documentación
$GEMINI_API_URL = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent';

// Validar método POST
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    echo json_encode(['error' => 'Método no permitido']);
    exit;
}

// Obtener datos del POST
$input = file_get_contents('php://input');
$data = json_decode($input, true);

if (!$data || !isset($data['pregunta'])) {
    http_response_code(400);
    echo json_encode(['error' => 'Datos inválidos']);
    exit;
}

$pregunta = $data['pregunta'];

// Validar que la pregunta no esté vacía
if (empty(trim($pregunta))) {
    http_response_code(400);
    echo json_encode(['error' => 'Pregunta vacía']);
    exit;
}

// ✅ CORREGIDO: Estructura según documentación oficial
$requestBody = [
    'contents' => [
        [
            'parts' => [
                [
                    'text' => $pregunta
                ]
            ]
        ]
    ]
];

// ✅ CORREGIDO: Usar headers según documentación
$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL => $GEMINI_API_URL, // ✅ Sin ?key= en la URL
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => json_encode($requestBody),
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'X-goog-api-key: ' . $GEMINI_API_KEY  // ✅ API Key en header
    ],
    CURLOPT_TIMEOUT => 30,
    CURLOPT_SSL_VERIFYPEER => true,
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$error = curl_error($ch);
curl_close($ch);

// Manejar errores de cURL
if ($error) {
    http_response_code(500);
    echo json_encode(['error' => 'Error de conexión: ' . $error]);
    exit;
}

// Manejar errores HTTP
if ($httpCode !== 200) {
    http_response_code($httpCode);
    $errorResponse = json_decode($response, true);
    
    $mensaje = 'Error desconocido';
    if (isset($errorResponse['error']['message'])) {
        $mensaje = $errorResponse['error']['message'];
    }
    
    echo json_encode(['error' => 'Error de Gemini AI: ' . $mensaje, 'http_code' => $httpCode]);
    exit;
}

// Procesar respuesta exitosa
$geminiResponse = json_decode($response, true);

if (!$geminiResponse || !isset($geminiResponse['candidates'][0]['content']['parts'][0]['text'])) {
    http_response_code(500);
    echo json_encode(['error' => 'Respuesta inválida de Gemini AI']);
    exit;
}

$respuesta = $geminiResponse['candidates'][0]['content']['parts'][0]['text'];

// Devolver respuesta exitosa
echo json_encode([
    'success' => true,
    'respuesta' => $respuesta
]);
?>