<?php
ob_start();
require_once __DIR__ . '/../files/guardiankey.php';
require_once __DIR__ . '/../config.php';

header('Content-Type: application/json');

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

if (!defined('GEMINI_API_KEY') || empty(GEMINI_API_KEY)) {
    http_response_code(500);
    echo json_encode(['error' => 'La clave de API de Gemini no está configurada.']);
    exit;
}

$data = json_decode(file_get_contents('php://input'), true);

if (json_last_error() !== JSON_ERROR_NONE) {
    http_response_code(400);
    echo json_encode(['error' => 'JSON mal formado.']);
    exit;
}

// Prompt Final - Instruye a la IA a generar HTML directamente para los títulos.
$prompt = "
Actúa como un consultor de negocios y redactor de propuestas de élite. Tu tarea es crear una propuesta comercial profesional, persuasiva y con formato HTML.

**REGLAS CRÍTICAS E INQUEBRANTABLES:**
1.  **FORMATO DE TÍTULOS:** Para todos los títulos de sección, DEBES usar etiquetas HTML `<h3>`. Ejemplo: `<h3>Introducción y Entendimiento del Proyecto</h3>`. NO uses asteriscos, markdown o cualquier otro formato para los títulos.
2.  **CERO PLACEHOLDERS:** NUNCA uses placeholders como '[Nombre del Cliente]'. Inserta los valores del contexto directamente.
3.  **FIRMA PROFESIONAL:** La propuesta DEBE terminar con un cierre cordial y una firma que incluya el nombre y la empresa proporcionados.

**Contexto (Datos para la propuesta):**
- Tu Nombre: {$data['your_name']}
- Tu Empresa: {$data['your_company']}
- Nombre del Cliente: {$data['client_name']}
- Empresa del Cliente: {$data['client_company']}
- Descripción del Proyecto: {$data['project_name']}
- Objetivo Principal: {$data['project_objective']}
- Entregables Clave: {$data['key_deliverables']}
- Plazo Estimado: {$data['timeline']}
- Inversión: {$data['price']}
- Validez de la Oferta: {$data['validity_period']}
- Propuesta De Valor: {$data['value_proposition']}

**Tu Tarea Detallada:**
Redacta el texto completo de la propuesta en español y su traducción profesional al inglés. Sigue esta estructura y directrices de contenido, usando las etiquetas `<h3>` para cada título:

`<h3>Introducción y Entendimiento del Proyecto</h3>`
- Saluda al cliente por su nombre. Escribe de parte de tu empresa. Confirma que has entendido su necesidad y presenta esta propuesta para abordarla, mencionando el proyecto de forma natural.

`<h3>Alcance del Proyecto y Entregables</h3>`
- Presenta la lista de entregables clave de forma clara.

`<h3>Plazos e Inversión</h3>`
- Especifica el plazo, la inversión total y la validez de la propuesta.

`<h3>Próximos Pasos</h3>`
- Explica qué necesita hacer el cliente para comenzar el proyecto.

`<h3>Cierre y Firma</h3>`
- Termina con una frase cordial como \"Quedo a su disposición para cualquier consulta.\".
- Añade un cierre formal como \"Atentamente,\".
- En la siguiente línea, tu nombre: {$data['your_name']}.
- En la línea final, el nombre de tu empresa: {$data['your_company']}.

**Formato de Salida Obligatorio:**
Un único objeto JSON con dos claves: `proposal_spanish` y `proposal_english`. El valor de cada clave debe ser el texto completo con las etiquetas `<h3>` incluidas.
";

$apiUrl = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=' . GEMINI_API_KEY;

$payload = [
    'contents' => [['parts' => [['text' => $prompt]]]],
    'generationConfig' => [
        'response_mime_type' => 'application/json',
        'response_schema' => [
            'type' => 'OBJECT',
            'properties' => [
                'proposal_spanish' => ['type' => 'STRING'],
                'proposal_english' => ['type' => 'STRING']
            ],
            'required' => ['proposal_spanish', 'proposal_english']
        ]
    ]
];

$ch = curl_init($apiUrl);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => json_encode($payload),
    CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
    CURLOPT_TIMEOUT => 90
]);

$response_ai = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curl_error = curl_error($ch);
curl_close($ch);

if ($response_ai === false || $http_code !== 200) {
    http_response_code(502);
    echo json_encode(['error' => 'No se pudo obtener una respuesta válida del servicio de IA.', 'details' => $curl_error, 'http_code' => $http_code]);
    exit;
}

$result_array = json_decode($response_ai, true);
$raw_response_text = $result_array['candidates'][0]['content']['parts'][0]['text'] ?? '';
$response_data = json_decode($raw_response_text, true);

if ($response_data === null || !isset($response_data['proposal_spanish']) || !isset($response_data['proposal_english'])) {
    http_response_code(500);
    echo json_encode(['error' => 'La IA no devolvió una propuesta con el formato esperado.']);
    exit;
}

ob_end_clean();
echo json_encode($response_data);
exit;
?>