<?php
// =============================================
// PROXY PARA BAIXAR XML DA FOCUS NFe
// =============================================
require_once 'includes/funcoes.php';
$pdo = conectarBanco();

// Recebe a referência da nota via GET
$ref = $_GET['ref'] ?? '';

if (empty($ref)) {
    http_response_code(400);
    die('Referência não informada');
}

// Busca a nota e o token da empresa
$stmt = $pdo->prepare("
    SELECT n.*, e.token, e.ambiente
    FROM notas_fiscais n
    INNER JOIN empresas e ON n.empresa_id = e.id
    WHERE n.ref = ?
");
$stmt->execute([$ref]);
$nota = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$nota) {
    http_response_code(404);
    die('Nota não encontrada');
}

// Busca o XML diretamente da API Focus
$baseUrl = ($nota['ambiente'] == 'producao') 
    ? 'https://api.focusnfe.com.br' 
    : 'https://homologacao.focusnfe.com.br';

// Constrói a URL do XML (exemplo: /arquivos/.../NFS...-nfse.xml?download=1)
// Você precisa extrair o caminho do XML do campo xml_url ou construir manualmente
if (!empty($nota['xml_url'])) {
    // Extrai apenas o caminho /arquivos/... da URL
    $path = parse_url($nota['xml_url'], PHP_URL_PATH);
    if ($path) {
        $urlXml = $baseUrl . $path . '?download=1';
    } else {
        $urlXml = $nota['xml_url'] . '?download=1';
    }
} else {
    // Se não tiver xml_url, tenta construir pelo número da NF
    $urlXml = $baseUrl . '/nfsen/xml/' . urlencode($ref) . '?download=1';
}

// Faz a requisição para a API Focus
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $urlXml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Basic ' . base64_encode($nota['token'] . ':'),
    'Accept: application/xml'
]);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

$xmlContent = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curlError = curl_error($ch);
curl_close($ch);

if ($curlError || $httpCode != 200) {
    http_response_code(500);
    die('Erro ao baixar XML: ' . ($curlError ?: 'HTTP ' . $httpCode));
}

// Define os headers para download do XML
header('Content-Type: application/xml');
header('Content-Disposition: attachment; filename="NFSe_' . $ref . '.xml"');
header('Content-Length: ' . strlen($xmlContent));

echo $xmlContent;
exit;