<?php
include 'verifica_login.php';
require_once 'conexao.php';
require_once __DIR__ . '/config/env.php';
$conn = conectar_banco();

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

try {
    $openai_api_key = trim((string)(getenv('OPENAI_API_KEY') ?: ($_ENV['OPENAI_API_KEY'] ?? '')));
    $openai_model = trim((string)(getenv('OPENAI_MODEL') ?: ($_ENV['OPENAI_MODEL'] ?? 'gpt-4o-mini')));

    if ($openai_api_key === '') {
        echo json_encode([
            'success' => false,
            'message' => 'Configuração pendente: defina OPENAI_API_KEY no arquivo .env para usar o resumo por IA.'
        ]);
        exit;
    }

    $id_pesquisa_empresa = (int)($_GET['id'] ?? 0);

    if ($id_pesquisa_empresa <= 0) {
        echo json_encode(['success' => false, 'message' => 'ID inválido.']);
        exit;
    }

    // Buscar dados da pesquisa_empresa
    $stmt = $conn->prepare("
        SELECT 
            pe.id, pe.status, pe.data_resposta, pe.responsavel_pesquisa,
            pe.nota_total, pe.classificacao, pe.observacoes_gerais, pe.observacoes_internas,
            e.NOME_FANTASIA, e.EMPRESA, e.CNAE, e.UF, e.CIDADE, e.FUNCIONARIOS, e.PORTE,
            s.nome_status as status_questionario,
            p.nome as nome_pesquisa
        FROM pesquisa_empresa pe
        LEFT JOIN empresas e ON pe.id_empresa_fk = e.ID_EMPRESA
        LEFT JOIN statusdoquestionario s ON pe.id_status_questionario_fk = s.id_status
        LEFT JOIN pesquisas p ON pe.id_pesquisa_fk = p.id
        WHERE pe.id = ?
    ");
    $stmt->bind_param('i', $id_pesquisa_empresa);
    $stmt->execute();
    $dados = $stmt->get_result()->fetch_assoc();

    if (!$dados) {
        echo json_encode(['success' => false, 'message' => 'Pesquisa não encontrada.']);
        exit;
    }

    // Buscar perguntas e respostas
    $stmt_respostas = $conn->prepare("
        SELECT qtp.pergunta, pr.resposta
        FROM pesquisa_respostas pr
        LEFT JOIN questionario_template_perguntas qtp ON pr.id_pergunta_fk = qtp.id
        WHERE pr.id_pesquisa_empresa_fk = ?
        ORDER BY qtp.numero ASC
    ");
    $stmt_respostas->bind_param('i', $id_pesquisa_empresa);
    $stmt_respostas->execute();
    $respostas_result = $stmt_respostas->get_result();

    $perguntas_respostas = [];
    while ($row = $respostas_result->fetch_assoc()) {
        $resp = $row['resposta'] ?? '';
        // Limpar formato "texto|nota"
        if (strpos($resp, '|') !== false) {
            $partes = explode('|', $resp);
            $resp = $partes[0];
        }
        $perguntas_respostas[] = [
            'pergunta' => $row['pergunta'],
            'resposta' => $resp
        ];
    }

    // Montar contexto para a IA
    $contexto = "DADOS DA EMPRESA:\n";
    $contexto .= "- Nome Fantasia: " . ($dados['NOME_FANTASIA'] ?? '-') . "\n";
    $contexto .= "- Razão Social: " . ($dados['EMPRESA'] ?? '-') . "\n";
    $contexto .= "- CNAE: " . ($dados['CNAE'] ?? '-') . "\n";
    $contexto .= "- Cidade/UF: " . ($dados['CIDADE'] ?? '-') . "/" . ($dados['UF'] ?? '-') . "\n";
    $contexto .= "- Funcionários: " . ($dados['FUNCIONARIOS'] ?? '-') . "\n";
    $contexto .= "- Porte: " . ($dados['PORTE'] ?? '-') . "\n\n";

    $contexto .= "DADOS DA PESQUISA:\n";
    $contexto .= "- Pesquisa: " . ($dados['nome_pesquisa'] ?? '-') . "\n";
    $contexto .= "- Status: " . ($dados['status_questionario'] ?? '-') . "\n";
    $contexto .= "- Nota Total: " . ($dados['nota_total'] ?? 0) . "\n";
    $contexto .= "- Classificação: " . ($dados['classificacao'] ?? '-') . "\n";
    $contexto .= "- Responsável: " . ($dados['responsavel_pesquisa'] ?? '-') . "\n";
    $contexto .= "- Observações Gerais: " . ($dados['observacoes_gerais'] ?? '-') . "\n";
    $contexto .= "- Observações Internas: " . ($dados['observacoes_internas'] ?? '-') . "\n\n";

    if (!empty($perguntas_respostas)) {
        $contexto .= "PERGUNTAS E RESPOSTAS:\n";
        foreach ($perguntas_respostas as $i => $pr) {
            $contexto .= ($i + 1) . ". " . $pr['pergunta'] . "\n";
            $contexto .= "   Resposta: " . ($pr['resposta'] ?: 'Sem resposta') . "\n";
        }
    }

    $prompt = "Você é um analista de negócios. Com base nos dados abaixo de uma pesquisa empresarial, gere um resumo executivo conciso (máximo 5 linhas) em português do Brasil. "
        . "Destaque os pontos mais relevantes: perfil da empresa, classificação obtida, pontos fortes e fracos identificados nas respostas, e uma recomendação breve de próximo passo.\n\n"
        . $contexto;

    // Chamar OpenAI (ChatGPT)
    $api_url = 'https://api.openai.com/v1/chat/completions';

    $payload = json_encode([
        'model' => $openai_model,
        'messages' => [
            [
                'role' => 'system',
                'content' => 'Você é um analista de negócios experiente. Seja objetivo, claro e prático. Responda em português do Brasil.'
            ],
            [
                'role' => 'user',
                'content' => $prompt
            ]
        ],
        'temperature' => 0.5,
        'max_tokens' => 350
    ]);

    $ch = curl_init($api_url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Content-Type: application/json',
        'Authorization: Bearer ' . $openai_api_key
    ]);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

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

    if ($curl_error) {
        echo json_encode(['success' => false, 'message' => 'Erro de conexão: ' . $curl_error]);
        exit;
    }

    if ($http_code !== 200) {
        $error_data = json_decode($response, true);
        $error_msg = $error_data['error']['message'] ?? 'Erro HTTP ' . $http_code;
        echo json_encode(['success' => false, 'message' => 'Erro na API: ' . $error_msg]);
        exit;
    }

    $result = json_decode($response, true);
    $resumo = $result['choices'][0]['message']['content'] ?? null;

    if (!$resumo) {
        echo json_encode(['success' => false, 'message' => 'Não foi possível gerar o resumo.']);
        exit;
    }

    echo json_encode(['success' => true, 'resumo' => trim($resumo)]);

} catch (Exception $e) {
    echo json_encode(['success' => false, 'message' => 'Erro: ' . $e->getMessage()]);
}

$conn->close();
?>
