<?php
// Add error reporting for debugging
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

session_start();
include "core/autoload.php";
include "core/app/model/ProductData.php";
include "core/app/model/ProposalData.php";

// Verificar si ProductDocData está incluido
if (!class_exists('ProductDocData')) {
    include "core/app/model/ProductDocData.php";
}

// Obtener parámetros
$proposalId = isset($_GET["id"]) ? $_GET["id"] : null;
$selectedProducts = [];

if (isset($_GET['products'])) {
    // Check if it's a single product or multiple products
    if (strpos($_GET['products'], ',') !== false) {
        $selectedProducts = explode(',', $_GET['products']);
    } else {
        $selectedProducts = [$_GET['products']];
    }
}

// Verificar que tenemos los datos necesarios
if (empty($proposalId) || empty($selectedProducts)) {
    die("Error: Faltan parámetros necesarios.");
}

// Ruta al archivo de cotización
$tempDir = 'temp';
$cotizacionFile = $tempDir . '/cotizacion_' . $proposalId . '.pdf';

// Verificar que el archivo de cotización existe
if (!file_exists($cotizacionFile)) {
    die("Error: No se encontró el archivo de cotización en: " . $cotizacionFile);
}

// Recopilar archivos de productos
$additionalFiles = [];
$hasAdditionalDocs = false;

foreach ($selectedProducts as $productId) {
    $dp = ProductDocData::getBy('type=1 and product_id', $productId);
    if ($dp && !empty($dp->image)) {
        $docPath = 'assets/documents/products/' . $dp->image;
        $altDocPath = 'assets/images/products/' . $dp->image;
        
        if (file_exists($docPath) && strtolower(pathinfo($docPath, PATHINFO_EXTENSION)) == 'pdf') {
            $additionalFiles[] = $docPath;
            $hasAdditionalDocs = true;
        } else if (file_exists($altDocPath) && strtolower(pathinfo($altDocPath, PATHINFO_EXTENSION)) == 'pdf') {
            $additionalFiles[] = $altDocPath;
            $hasAdditionalDocs = true;
        }
    }
}

// Si no hay documentos adicionales, mostrar solo la cotización
if (!$hasAdditionalDocs) {
    header('Content-Type: application/pdf');
    header('Content-Disposition: inline; filename="cotizacion.pdf"');
    readfile($cotizacionFile);
    exit;
}

// Método 2: Usando FPDI
try {
    // Incluir FPDF primero (es requerido por FPDI)
    require('fpdf186/fpdf.php');
    
    // Luego incluir FPDI
    require('FPDI/src/autoload.php');
    
    // Crear instancia de FPDI
    $pdf = new \setasign\Fpdi\Fpdi();
    $outputFile = $tempDir . '/cotizacion_completa_' . $proposalId . '_' . time() . '.pdf';
    
    // Primero añadimos todas las páginas del PDF de cotización
    $pageCount = $pdf->setSourceFile($cotizacionFile);
    for ($pageNo = 1; $pageNo <= $pageCount; $pageNo++) {
        $tpl = $pdf->importPage($pageNo);
        $size = $pdf->getTemplateSize($tpl);
        $pdf->AddPage($size['orientation'], [$size['width'], $size['height']]);
        $pdf->useTemplate($tpl);
    }
    
    // Añadimos los archivos de documentación de productos
    foreach ($additionalFiles as $filePath) {
        try {
            $docPageCount = $pdf->setSourceFile($filePath);
            for ($pageNo = 1; $pageNo <= $docPageCount; $pageNo++) {
                $tpl = $pdf->importPage($pageNo);
                $size = $pdf->getTemplateSize($tpl);
                $pdf->AddPage($size['orientation'], [$size['width'], $size['height']]);
                $pdf->useTemplate($tpl);
            }
        } catch (Exception $e) {
            // Ignorar errores en archivos individuales
            error_log("Error al procesar el documento: " . $filePath . " - " . $e->getMessage());
        }
    }
    
    // Guardar y mostrar el PDF
    $pdf->Output('I', 'cotizacion_completa.pdf');
    exit;
} catch (Exception $e) {
    // Si FPDI falla, mostramos el error y continuamos con el método alternativo
    error_log("Error en FPDI: " . $e->getMessage());
    
    // Mostrar solo la cotización como fallback
    header('Content-Type: application/pdf');
    header('Content-Disposition: inline; filename="cotizacion.pdf"');
    readfile($cotizacionFile);
    exit;
}
