<?php
session_start();
require_once '../includes/db.php';

if (!isset($_SESSION['usuario_id']) || $_SESSION['rol'] !== 'admin') {
    header('Location: login.php');
    exit;
}

$db = new Database();
$pdo = $db->getPDO();

if (isset($_POST['cdc']) && !empty($_POST['cdc'])) {
    try {
        // Obtener configuración
        $stmtConfig = $pdo->prepare("SELECT dominio, tenantid, api_key FROM configuracion_facturacion LIMIT 1");
        $stmtConfig->execute();
        $config = $stmtConfig->fetch(PDO::FETCH_ASSOC);

        // Preparar URL y datos
        $url = rtrim($config['dominio'], '/') . '/factuweb/cancelar_api.php';
        $postData = [
            'apiKey' => $config['api_key'],
            'tenantId' => $config['tenantid'],
            'cdc' => trim($_POST['cdc']),
            'motivo' => 'Se digitó erróneamente datos del cliente'
        ];

        // Inicializar cURL
        $ch = curl_init($url);
        curl_setopt_array($ch, [
            CURLOPT_POST => 1,
            CURLOPT_POSTFIELDS => http_build_query($postData),
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_SSL_VERIFYPEER => true,
            CURLOPT_SSL_VERIFYHOST => 2,
            CURLOPT_TIMEOUT => 30,
            CURLOPT_HEADER => true
        ]);

        // Ejecutar petición
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

        // Separar header y body
        $headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
        $header = substr($response, 0, $headerSize);
        $body = substr($response, $headerSize);

        // Guardar respuesta en sesión
        $_SESSION['respuesta_servidor'] = [
            'fecha' => date('Y-m-d H:i:s'),
            'datos' => json_decode($body, true),
            'respuesta_completa' => $body
        ];

        if ($httpCode === 200) {
            // Construir URL del PDF de cancelación
            $urlPDF = rtrim($config['dominio'], '/') . '/factuweb/' . 
                     $config['tenantid'] . '/cancel_factura_' . 
                     trim($_POST['cdc']) . '.pdf';

            // Guardar URL del PDF en sesión
            $_SESSION['pdf_url'] = $urlPDF;

            // Abrir PDF en nueva ventana y redirigir
            echo "<script>
                  window.open('$urlPDF', '_blank');
                  window.location.href = 'facturar.php';
                  </script>";
            exit;
        }

        curl_close($ch);
        header('Location: facturar.php');
        exit;

    } catch (Exception $e) {
        $_SESSION['mensaje_error'] = "Error: " . $e->getMessage();
        header('Location: facturar.php');
        exit;
    }
}