<?php
// envio_certificados.php - Sistema de envío de certificados
require_once 'utils_database.php';
require_once 'certificado_participacion.php'; // Incluimos el archivo que contiene la función generarCertificadoParticipacion
//require_once 'certificado_tcpdf.php';

// Incluir PHPMailer si no está ya incluido
if (!class_exists('PHPMailer\PHPMailer\PHPMailer')) {
    require_once 'vendor/autoload.php';
}

// Importar las clases de PHPMailer
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

// Iniciar sesión para manejo de mensajes entre páginas
session_start();
// Configuración para visualizar y registrar errores
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// Definir archivo de log personalizado
ini_set('error_log', 'envio_certificados_error.log');

/**
 * Envía un certificado de participación por correo electrónico
 * Usando una imagen de plantilla con campos específicos
 */
function enviarCertificadoPorCorreo($trabajo_id, $email_destino, $nombre_destinatario, $titulo_trabajo) {
    // Establecer tiempo de ejecución máximo
    set_time_limit(300); // 5 minutos
    
    // Habilitar el registro de errores
    ini_set('display_errors', 1);
    ini_set('log_errors', 1);
    error_reporting(E_ALL);
    
    // Registrar información de inicio
    error_log("Iniciando envío de certificado para trabajo ID: $trabajo_id a $email_destino");
    
    // Generamos el certificado y lo guardamos temporalmente
    $temp_dir = sys_get_temp_dir();
    $pdf_path = $temp_dir . '/certificado_' . $trabajo_id . '_' . md5(time() . $email_destino) . '.pdf';
    
    // Comprobar permisos del directorio temporal
    if (!is_writable($temp_dir)) {
        error_log("ERROR: El directorio temporal NO tiene permisos de escritura");
        return false;
    }
    
    try {
        // Obtener datos adicionales desde la base de datos
        $conn = Activarmysql();
        
        // Consulta para obtener tipo_presentacion
        $sql_presentacion = "SELECT tc.descripcion_eng FROM ttrabajo t
                            JOIN ttipo_presentacion tc ON t.cod_tipo_presentacion_aprobado = tc.codigo
                            WHERE t.id = ?";
        
        $stmt_presentacion = $conn->prepare($sql_presentacion);
        if ($stmt_presentacion === false) {
            error_log("Error de preparación MySQL (presentación): " . $conn->error);
            $tipo_presentacion = "ORAL PRESENTATION"; // Valor por defecto
        } else {
            $stmt_presentacion->bind_param("i", $trabajo_id);
            $stmt_presentacion->execute();
            $result_presentacion = $stmt_presentacion->get_result();
            if ($result_presentacion->num_rows === 1) {
                $row_presentacion = $result_presentacion->fetch_assoc();
                $tipo_presentacion = $row_presentacion['descripcion_eng'];
            } else {
                $tipo_presentacion = "ORAL PRESENTATION"; // Valor por defecto
            }
        }
        
        // Consulta para obtener tipo_competicion
        $sql_competicion = "SELECT tc.descripcion_eng FROM ttrabajo t
                           JOIN ttipo_competicion tc ON t.cod_tipo_competicion_propuesto = tc.codigo
                           WHERE t.id = ?";
        
        $stmt_competicion = $conn->prepare($sql_competicion);
        if ($stmt_competicion === false) {
            error_log("Error de preparación MySQL (competición): " . $conn->error);
            $tipo_competicion = "RESEARCH COMPETITION"; // Valor por defecto
        } else {
            $stmt_competicion->bind_param("i", $trabajo_id);
            $stmt_competicion->execute();
            $result_competicion = $stmt_competicion->get_result();
            if ($result_competicion->num_rows === 1) {
                $row_competicion = $result_competicion->fetch_assoc();
                $tipo_competicion = $row_competicion['descripcion_eng'];
            } else {
                $tipo_competicion = "RESEARCH COMPETITION"; // Valor por defecto
            }
        }
        
        // Consulta para obtener la lista de todos los autores
        $sql_autores = "SELECT 
                          titulo_autor1, autor1, apellido_autor1,
                          titulo_autor2, autor2, apellido_autor2,
                          titulo_autor3, autor3, apellido_autor3,
                          titulo_autor4, autor4, apellido_autor4,
                          titulo_autor5, autor5, apellido_autor5,
                          titulo_autor6, autor6, apellido_autor6,
                          titulo_autor7, autor7, apellido_autor7,
                          titulo_autor8, autor8, apellido_autor8,
                          titulo_autor9, autor9, apellido_autor9,
                          titulo_autor10, autor10, apellido_autor10
                        FROM ttrabajo 
                        WHERE id = ?";
        
        $stmt_autores = $conn->prepare($sql_autores);
        $lista_autores = "";
        
        if ($stmt_autores !== false) {
            $stmt_autores->bind_param("i", $trabajo_id);
            $stmt_autores->execute();
            $result_autores = $stmt_autores->get_result();
            
            if ($result_autores->num_rows === 1) {
                $row_autores = $result_autores->fetch_assoc();
                $nombres_autores = [];
                
                // Obtener nombres de todos los autores
                for ($i = 1; $i <= 10; $i++) {
                    $titulo_key = "titulo_autor" . $i;
                    $nombre_key = "autor" . $i;
                    $apellido_key = "apellido_autor" . $i;
                    
                    if (!empty($row_autores[$nombre_key]) || !empty($row_autores[$apellido_key])) {
                        $nombre_completo = '';
                        
                        // Añadir título si existe
                        if (!empty($row_autores[$titulo_key])) {
                            $nombre_completo .= trim($row_autores[$titulo_key]) . ' ';
                        }
                        
                        // Añadir nombre si existe
                        if (!empty($row_autores[$nombre_key])) {
                            $nombre_completo .= trim($row_autores[$nombre_key]) . ' ';
                        }
                        
                        // Añadir apellido si existe
                        if (!empty($row_autores[$apellido_key])) {
                            $nombre_completo .= trim($row_autores[$apellido_key]);
                        }
                        
                        $nombre_completo = trim($nombre_completo);
                        
                        // Solo añadir si no es el autor destinatario actual
                        if (!empty($nombre_completo) && $nombre_completo != $nombre_destinatario) {
                            $nombres_autores[] = $nombre_completo;
                        }
                    }
                }
                
                // Crear la lista de autores separados por comas
                if (!empty($nombres_autores)) {
                    $lista_autores = implode(', ', $nombres_autores);
                }
            }
        }
        
        $conn->close();
        
        // Generar el PDF con TCPDF - Formato vertical
        $pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false);
        
        // Configurar el documento
        $pdf->SetCreator('PANAMERICAN TRAUMA SOCIETY');
        $pdf->SetAuthor('PANAMERICAN TRAUMA SOCIETY');
        $pdf->SetTitle('Certificate of Honor');
        $pdf->SetSubject('Certificate of Honor');
        $pdf->SetKeywords('Certificate, Honor, Congress');
        
        // Eliminar cabeceras y pies de página
        $pdf->setPrintHeader(false);
        $pdf->setPrintFooter(false);
        
        // Establecer márgenes
        $pdf->SetMargins(0, 0, 0);
        
        // Desactivar auto page breaks
        $pdf->SetAutoPageBreak(false);
        
        // Agregar la fuente LT Diploma solo para el nombre del autor
        try {
            $fontname_diploma = TCPDF_FONTS::addTTFfont('assets/fonts/LT_Diploma.ttf', 'TrueTypeUnicode', '', 96);
            error_log("Fuente LT Diploma cargada: " . $fontname_diploma);
            
            if ($fontname_diploma === false) {
                error_log("No se pudo cargar la fuente LT Diploma, se usará una fuente alternativa");
                $fontname_diploma = 'helvetica'; // Fuente alternativa
            }
        } catch (Exception $e) {
            error_log("Error al cargar la fuente LT Diploma: " . $e->getMessage());
            $fontname_diploma = 'helvetica'; // Fuente alternativa
        }
        
        // Añadir página - Formato vertical (A4)
        $pdf->AddPage('P');
        
        // Insertar la imagen de la plantilla del certificado que cubre toda la página
        $pdf->Image('assets/img/certificado_background.jpg', 0, 0, 210, 297, 'JPG', '', '', true, 300);
        
        // PROUDLY PRESENTS THIS CERTIFICATE OF HONOR - Usar helvetica
        $pdf->SetFont('helvetica', 'B', 16);
        $pdf->SetY(62); // Mantener la posición existente
        $pdf->Cell(0, 10, 'PROUDLY PRESENTS THIS CERTIFICATE OF HONOR', 0, 1, 'C');
        
        // FOR AN OUTSTANDING - Usar helvetica
        $pdf->SetY(69); // Mantener la posición existente
        $pdf->Cell(0, 10, 'FOR AN OUTSTANDING ' . mb_strtoupper($tipo_presentacion) . ' TO:', 0, 1, 'C');
        
        // Nombre del autor - Usar la fuente LT Diploma
        $pdf->SetFont($fontname_diploma, 'BI', 24); // Cursiva negrita
        $pdf->SetY(90); // Mantener la posición existente
        $pdf->Cell(0, 15, $nombre_destinatario, 0, 1, 'C');
        
              // Lista de autores adicionales debajo del nombre principal
        if (!empty($lista_autores)) {
            $pdf->SetY(105); // Posicionar justo debajo del nombre principal
            $pdf->SetFont('helvetica', 'I', 20); // Fuente más pequeña e itálica
            
            // Establecer márgenes laterales para la lista de autores
            $margen_lateral = 30; // 30mm de margen a cada lado
            $ancho_contenido = 210 - (2 * $margen_lateral); // Ancho de página A4 (210mm) menos los márgenes
            
            $pdf->SetX($margen_lateral);
            
            // Usar MultiCell en lugar de Cell para permitir que el texto se ajuste en múltiples líneas si es necesario
            // Aumentar la altura de la línea de 5 a 8
            $pdf->MultiCell($ancho_contenido, 8, $lista_autores, 0, 'C', false, 1, '', '', true, 0, false, true, 0, 'T', true);
        }
        // Título del trabajo - Volver a helvetica
        $pdf->SetY(118); // Ajustar posición para dar espacio a los autores
        $pdf->SetFont('helvetica', 'B', 15);
        $pdf->SetX(20);
        $pdf->MultiCell(170, 10, mb_strtoupper($titulo_trabajo), 0, 'C');
        
        // Tipo de presentación y competición - Usar helvetica
        $pdf->SetY(145); // Ajustar posición
        $pdf->SetFont('helvetica', 'B', 14);
        $pdf->Cell(0, 10, mb_strtoupper($tipo_presentacion) . ' ~ ' . mb_strtoupper($tipo_competicion), 0, 1, 'C');
        
        // Generar el PDF
        $pdf->Output($pdf_path, 'F');
        error_log("PDF generado correctamente en: $pdf_path");
        
        // Verificar si el archivo existe y su tamaño
        if (file_exists($pdf_path)) {
            $filesize = filesize($pdf_path);
            if ($filesize <= 0) {
                error_log("ERROR: El archivo PDF está vacío");
                return false;
            }
        } else {
            error_log("ERROR: El archivo PDF no se generó en $pdf_path");
            return false;
        }
        
        // Preparar el correo
        $subject = 'Certificate of Honor - ' . htmlspecialchars($titulo_trabajo);
        
        // Preparar el mensaje HTML
        $message = "
        <html>
        <head>
            <style>
                body { font-family: helvetica, sans-serif; line-height: 1.6; color: #333; }
                .container { max-width: 600px; margin: 0 auto; padding: 20px; }
                .header { background-color: #015a5e; color: white; padding: 20px; text-align: center; }
                .content { padding: 20px; background-color: #f9f9f9; }
                .footer { font-size: 12px; text-align: center; margin-top: 30px; color: #666; }
            </style>
        </head>
        <body>
            <div class='container'>
                <div class='header'>
                    <h1>Certificate of Honor</h1>
                </div>
                <div class='content'>
                    <p>Dear <strong>" . htmlspecialchars($nombre_destinatario) . "</strong>,</p>
                    <p>We are pleased to send you your Certificate of Honor for your outstanding " . htmlspecialchars(strtolower($tipo_presentacion)) . " at the PANAMERICAN CONGRESS OF TRAUMA, CRITICAL CARE, AND EMERGENCY SURGERY.</p>
                    <p>Your work titled <em>\"" . htmlspecialchars($titulo_trabajo) . "\"</em> has been recognized for its excellence.</p>
                    <p>You will find your official certificate attached to this email in PDF format. We recommend you save it for your academic records.</p>
                    <p>We appreciate your contribution and hope to count on your presence at future congresses.</p>
                    <p>Cordially,</p>
                    <p><strong>Organizing Committee</strong><br>PANAMERICAN TRAUMA SOCIETY</p>
                </div>
                <div class='footer'>
                    <p>This is an automated email, please do not reply to this address.</p>
                    <p>&copy; " . date('Y') . " PANAMERICAN TRAUMA SOCIETY. All rights reserved.</p>
                </div>
            </div>
        </body>
        </html>";
        
        // Enviar el correo usando PHPMailer
        $mail_sent = enviarCorreoConPhpMailer($email_destino, $subject, $message, $pdf_path);
        
        // Verificar el resultado
        if ($mail_sent) {
            error_log("Correo enviado exitosamente a $email_destino");
        } else {
            error_log("ERROR al enviar correo a $email_destino");
        }
        
        // Eliminar el archivo temporal
        if (file_exists($pdf_path)) {
            @unlink($pdf_path);
        }
        
        return $mail_sent;
    } catch (Exception $e) {
        // En caso de error, eliminar el archivo temporal si existe
        if (file_exists($pdf_path)) {
            @unlink($pdf_path);
        }
        error_log('Excepción: ' . $e->getMessage() . "\n" . $e->getTraceAsString());
        return false;
    }
}

/**
 * Función para enviar correo usando PHPMailer
 * Implementación que reemplaza la función mail() nativa
 */
function enviarCorreoConPhpMailer($destinatario, $asunto, $mensaje, $adjunto_path = null) {
    // Verificar que PHPMailer esté disponible
    if (!file_exists('vendor/phpmailer/phpmailer/src/PHPMailer.php')) {
        error_log("ERROR: PHPMailer no está instalado");
        return false;
    }
    
    $mail = new PHPMailer(true);
    
    try {
        // Configuración del servidor
        $mail->isSMTP();
        $mail->Host       = 'smtp.hostinger.com';  // Cambia esto a tu servidor SMTP
        $mail->SMTPAuth   = true;
        $mail->Username   = 'eliasibjuliogarcia@eventiox.com';  // Tu dirección de email
        $mail->Password   = 'P4ulin4.*';  // Reemplaza con tu contraseña
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
        $mail->Port       = 587;
        $mail->CharSet    = 'UTF-8';
        
        // Remitentes y destinatarios
        $mail->setFrom('eliasibjuliogarcia@eventiox.com', 'Certificados PTS');  // Usar el email autenticado como remitente
        $mail->addAddress($destinatario);
        
        // Contenido
        $mail->isHTML(true);
        $mail->Subject = $asunto;
        $mail->Body    = $mensaje;
        
        // Adjuntar archivo si se proporciona
        if ($adjunto_path && file_exists($adjunto_path)) {
            $mail->addAttachment($adjunto_path, 'certificado_participacion.pdf');
        }
        
        // Enviar el correo
        $mail->send();
        return true;
    } catch (Exception $e) {
        error_log("ERROR de PHPMailer: " . $mail->ErrorInfo);
        return false;
    }
}

/**
 * Genera un certificado en formato HTML que utiliza la imagen de plantilla como fondo
 * con las mismas dimensiones y ubicaciones de campos que en el certificado TCPDF
 */
function outputHtmlCertificate($trabajo, $autor_corresponsal, $autores, $area_tematica, $tipo_presentacion, $cert_id) {
    // Limpiar cualquier salida anterior
    ob_clean();
    
    // Título para el navegador
    $clean_title = preg_replace('/[^a-zA-Z0-9]/', '_', $trabajo['titulo']);
    $clean_title = substr($clean_title, 0, 30);
    $filename = 'certificado_' . (isset($trabajo['codigo']) ? $trabajo['codigo'] : '') . '_' . $clean_title;
    
    // Generar el HTML para visualización directa en navegador
    header('Content-Type: text/html; charset=utf-8');
    
    // Convertir la lista de autores (excluyendo el autor corresponsal)
    if (is_array($autores)) {
        $otros_autores = array_filter($autores, function($autor) use ($autor_corresponsal) {
            return trim($autor) !== trim($autor_corresponsal);
        });
        $lista_autores = implode(', ', $otros_autores);
    } else {
        $lista_autores = "";
    }
    
    // Preparar el tipo de competición (por defecto)
    $tipo_competicion = "RESEARCH COMPETITION";
    
    ?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Certificate of Honor: <?php echo htmlspecialchars($trabajo['titulo']); ?></title>
    
    <!-- Fuentes de Google -->
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;600;700&family=Playfair+Display:ital,wght@0,400;0,700;1,400;1,700&display=swap" rel="stylesheet">
    
    <!-- Font Awesome para iconos -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    
    <style>
        /* Estilos generales */
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        
        body {
            font-family: 'helvetica', sans-serif;
            background-color: #f0f2f5;
            color: #333;
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100vh;
            padding: 20px;
        }
        
        /* Contenedor del certificado - Formato A4 Vertical */
        .certificate-container {
            width: 210mm; /* A4 portrait */
            height: 297mm; /* A4 portrait */
            position: relative;
            overflow: hidden;
            background-color: white;
            box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
            border-radius: 8px;
        }
        
        /* Imagen de fondo del certificado */
        .certificate-background {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            z-index: 1;
            /* La imagen debe estar disponible en la ruta especificada */
            background-image: url('assets/img/certificado_background.jpg');
            background-size: 100% 100%;
            background-position: center;
        }
        
        /* Contenido del certificado */
        .certificate-content {
            position: relative;
            z-index: 2;
            height: 100%;
            width: 100%;
        }
        
        /* Título principal - Certificado de Honor */
        .honor-text {
            position: absolute;
            top: 62mm; /* Posición exacta del TCPDF: SetY(62) */
            left: 0;
            width: 100%;
            text-align: center;
            font-family: 'helvetica', sans-serif;
            font-size: 16px;
            font-weight: bold;
            color: #000;
        }
        
        /* Texto de presentación */
        .presentation-text {
            position: absolute;
            top: 69mm; /* Posición exacta del TCPDF: SetY(69) */
            left: 0;
            width: 100%;
            text-align: center;
            font-family: 'helvetica', sans-serif;
            font-size: 16px;
            font-weight: bold;
            color: #000;
        }
        
        /* Nombre del destinatario */
        .recipient-name {
            position: absolute;
            top: 90mm; /* Posición exacta del TCPDF: SetY(90) */
            left: 0;
            width: 100%;
            height: 15mm; /* Altura exacta del TCPDF: Cell(0, 15) */
            text-align: center;
            font-family: 'LT Diploma', 'helvetica', serif;
            font-size: 24px;
            font-weight: bold;
            font-style: italic;
            color: #000;
            display: flex;
            justify-content: center;
            align-items: center;
        }
        
        /* Lista de autores adicionales */
        .authors-list {
            position: absolute;
            top: 105mm; /* Posición exacta del TCPDF: SetY(105) */
            left: 30mm; /* Margen lateral exacto del TCPDF: $margen_lateral = 30 */
            width: 150mm; /* Ancho exacto del TCPDF: 210 - (2 * 30) = 150mm */
            text-align: center;
            font-family: 'helvetica', sans-serif;
            font-size: 20px;
            font-style: italic;
            color: #000;
            line-height: 8mm; /* Altura de línea exacta del TCPDF: MultiCell(..., 8, ...) */
        }
        
        /* Título del trabajo */
        .work-title {
            position: absolute;
            top: 118mm; /* Posición exacta del TCPDF: SetY(118) */
            left: 20mm; /* Posición exacta del TCPDF: SetX(20) */
            width: 170mm; /* Ancho exacto del TCPDF: MultiCell(170, ...) */
            text-align: center;
            font-family: 'helvetica', sans-serif;
            font-size: 15px;
            font-weight: bold;
            color: #000;
            line-height: 10mm; /* Altura de línea exacta del TCPDF: MultiCell(..., 10, ...) */
        }
        
        /* Tipo de presentación y competición */
        .presentation-competition {
            position: absolute;
            top: 145mm; /* Posición exacta del TCPDF: SetY(145) */
            left: 0;
            width: 100%;
            height: 10mm; /* Altura exacta del TCPDF: Cell(0, 10) */
            text-align: center;
            font-family: 'helvetica', sans-serif;
            font-size: 14px;
            font-weight: bold;
            color: #000;
            display: flex;
            justify-content: center;
            align-items: center;
        }
        
        /* Botones de utilidad */
        .utility-buttons {
            position: fixed;
            bottom: 20px;
            left: 50%;
            transform: translateX(-50%);
            display: flex;
            gap: 15px;
            z-index: 1000;
        }
        
        .btn {
            background-color: #015a5e;
            color: white;
            border: none;
            padding: 10px 20px;
            border-radius: 4px;
            cursor: pointer;
            display: flex;
            align-items: center;
            gap: 8px;
            font-family: 'helvetica', sans-serif;
            font-weight: 600;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
            transition: all 0.3s ease;
        }
        
        .btn:hover {
            background-color: #327063;
            transform: translateY(-2px);
            box-shadow: 0 6px 8px rgba(0, 0, 0, 0.1);
        }
        
        /* Fuente personalizada LT Diploma (intento cargar de Google Fonts) */
        @font-face {
            font-family: 'LT Diploma';
            src: url('assets/fonts/LT_Diploma.ttf') format('truetype');
            font-weight: normal;
            font-style: normal;
        }
        
        /* Estilos de impresión */
        @media print {
            body {
                background: none;
                padding: 0;
                margin: 0;
            }
            
            .certificate-container {
                box-shadow: none;
                border-radius: 0;
                width: 100%;
                height: 100%;
            }
            
            .utility-buttons {
                display: none;
            }
            
            @page {
                size: portrait;
                margin: 0;
            }
        }
    </style>
</head>
<body>
    <div class="certificate-container">
        <!-- Fondo del certificado (imagen) -->
        <div class="certificate-background"></div>
        
        <!-- Contenido del certificado -->
        <div class="certificate-content">
            <!-- Textos principales - posiciones exactas del TCPDF -->
            <div class="honor-text">PROUDLY PRESENTS THIS CERTIFICATE OF HONOR</div>
            
            <div class="presentation-text">
                FOR AN OUTSTANDING <?php echo htmlspecialchars(mb_strtoupper($tipo_presentacion ?: 'ORAL PRESENTATION')); ?> TO:
            </div>
            
            <!-- Nombre del destinatario - posición exacta del TCPDF -->
            <div class="recipient-name"><?php echo htmlspecialchars($autor_corresponsal); ?></div>
            
            <!-- Lista de autores (si hay) - posición exacta del TCPDF -->
            <?php if (!empty($lista_autores)): ?>
            <div class="authors-list"><?php echo htmlspecialchars($lista_autores); ?></div>
            <?php endif; ?>
            
            <!-- Título del trabajo - posición exacta del TCPDF -->
            <div class="work-title"><?php echo htmlspecialchars(mb_strtoupper($trabajo['titulo'])); ?></div>
            
            <!-- Tipo de presentación y competición - posición exacta del TCPDF -->
            <div class="presentation-competition">
                <?php echo htmlspecialchars(mb_strtoupper($tipo_presentacion ?: 'ORAL PRESENTATION')); ?> ~ <?php echo htmlspecialchars(mb_strtoupper($tipo_competicion)); ?>
            </div>
        </div>
    </div>
    
    <!-- Botones de utilidad -->
    <div class="utility-buttons">
        <button class="btn" id="printBtn">
            <i class="fas fa-print"></i> Imprimir
        </button>
        <button class="btn" id="downloadBtn">
            <i class="fas fa-download"></i> Descargar PDF
        </button>
    </div>
    
    <!-- Script para la funcionalidad de impresión y descarga -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js"></script>
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            // Configuración para html2pdf - Formato VERTICAL (A4)
            const pdfOptions = {
                margin: 0,
                filename: '<?php echo $filename; ?>.pdf',
                image: { type: 'jpeg', quality: 1 },
                html2canvas: { scale: 2, useCORS: true, logging: true },
                jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }
            };
            
            // Elemento a convertir
            const element = document.querySelector('.certificate-container');
            
            // Botón de impresión
            document.getElementById('printBtn').addEventListener('click', function() {
                window.print();
            });
            
            // Botón de descarga PDF
            document.getElementById('downloadBtn').addEventListener('click', function() {
                // Mostrar indicador de carga
                this.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Procesando...';
                this.disabled = true;
                
                // Pequeño retraso para asegurar que la UI se actualice
                setTimeout(() => {
                    html2pdf().set(pdfOptions).from(element).save()
                        .then(() => {
                            // Restaurar botón
                            this.innerHTML = '<i class="fas fa-download"></i> Descargar PDF';
                            this.disabled = false;
                        });
                }, 100);
            });
        });
    </script>
</body>
</html>
    <?php
    exit;
}
/**
 * Función para enviar certificados a todos los autores de un trabajo
 * Ahora envía solo a los autores adicionales, omitiendo al corresponsal
 */
function enviarCertificadoATodosLosAutores($trabajo_id) {
    // Conectar a la base de datos
    $conn = Activarmysql();
    $exitosos = 0;
    $fallidos = 0;
    
    // Consulta para obtener datos del trabajo y todos los emails de autores
    $sql = "SELECT id, titulo, codigo,
       email, nombre_corresponsal, apellido_corresponsal,
       titulo_autor1, autor1, apellido_autor1, email_autor1,
       titulo_autor2, autor2, apellido_autor2, email_autor2,
       titulo_autor3, autor3, apellido_autor3, email_autor3,
       titulo_autor4, autor4, apellido_autor4, email_autor4,
       titulo_autor5, autor5, apellido_autor5, email_autor5,
       titulo_autor6, autor6, apellido_autor6, email_autor6,
       titulo_autor7, autor7, apellido_autor7, email_autor7,
       titulo_autor8, autor8, apellido_autor8, email_autor8,
       titulo_autor9, autor9, apellido_autor9, email_autor9,
       titulo_autor10, autor10, apellido_autor10, email_autor10
       
FROM ttrabajo
WHERE id = ?";
    
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("i", $trabajo_id);
    $stmt->execute();
    $result = $stmt->get_result();
    
    if ($result->num_rows === 1) {
        $trabajo = $result->fetch_assoc();
        
        // Array para almacenar todos los emails a los que se enviará
        $emails_destino = [];
        
        // Añadir los emails de los autores adicionales (omitiendo al corresponsal)
        for ($i = 1; $i <= 10; $i++) {
            $campo_email = 'email_autor' . $i;
            $campo_titulo = 'titulo_autor' . $i;
            $campo_nombre = 'autor' . $i;
            $campo_apellido = 'apellido_autor' . $i;
            
            if (!empty($trabajo[$campo_email])) {
                // Construir el nombre completo con título, nombre y apellido
                $nombre_completo = '';
                
                // Añadir el título si existe
                if (!empty($trabajo[$campo_titulo])) {
                    $nombre_completo .= trim($trabajo[$campo_titulo]) . ' ';
                }
                
                // Añadir nombre y apellido
                if (!empty($trabajo[$campo_nombre])) {
                    $nombre_completo .= trim($trabajo[$campo_nombre]);
                }
                
                if (!empty($trabajo[$campo_apellido])) {
                    if (!empty($trabajo[$campo_nombre])) {
                        $nombre_completo .= ' ';
                    }
                    $nombre_completo .= trim($trabajo[$campo_apellido]);
                }
                
                // Si no hay nombre/apellido, usar "Autor X" como respaldo
                if (trim($nombre_completo) === '') {
                    $nombre_completo = 'Autor ' . $i;
                }
                
                $emails_destino[] = [
                    'email' => $trabajo[$campo_email],
                    'nombre' => $nombre_completo,
                    'tipo' => 'autor' . $i
                ];
            }
        }
        
        // Si no hay emails para enviar, retornar error
        if (empty($emails_destino)) {
            error_log("No hay emails de autores para el trabajo ID: " . $trabajo_id);
            return ['exitosos' => 0, 'fallidos' => 0, 'total' => 0];
        }
        
        // Enviar a cada email
        foreach ($emails_destino as $destinatario) {
            $envio_exitoso = enviarCertificadoPorCorreo(
                $trabajo['id'],
                $destinatario['email'],
                $destinatario['nombre'],
                $trabajo['titulo']
            );
            
            if ($envio_exitoso) {
                $exitosos++;
                
                // Registrar el envío exitoso
                $sql_log = "INSERT INTO tlog_envios_certificados (trabajo_id, email_destino, nombre_destinatario, fecha_envio, exitoso, tipo_destinatario) 
                            VALUES (?, ?, ?, NOW(), 1, ?)";
                $stmt_log = $conn->prepare($sql_log);
                $stmt_log->bind_param("isss", $trabajo['id'], $destinatario['email'], $destinatario['nombre'], $destinatario['tipo']);
                $stmt_log->execute();
            } else {
                $fallidos++;
                
                // Registrar el error
                $sql_log = "INSERT INTO tlog_envios_certificados (trabajo_id, email_destino, nombre_destinatario, fecha_envio, exitoso, error_mensaje, tipo_destinatario) 
                            VALUES (?, ?, ?, NOW(), 0, 'Error al enviar el correo', ?)";
                $stmt_log = $conn->prepare($sql_log);
                $stmt_log->bind_param("isss", $trabajo['id'], $destinatario['email'], $destinatario['nombre'], $destinatario['tipo']);
                $stmt_log->execute();
            }
        }
    } else {
        error_log("Trabajo no encontrado. ID: " . $trabajo_id);
    }
    
    $conn->close();
    
    return [
        'exitosos' => $exitosos,
        'fallidos' => $fallidos,
        'total' => count($emails_destino ?? [])
    ];
}

// Procesar solicitud de envío masivo
if (isset($_POST['enviar_certificados']) && isset($_POST['trabajos_seleccionados'])) {
    $trabajos_ids = $_POST['trabajos_seleccionados'];
    $total = count($trabajos_ids);
    $total_enviados = 0;
    $total_errores = 0;
    $total_destinatarios = 0;
    
    foreach ($trabajos_ids as $trabajo_id) {
        // Enviar a todos los autores del trabajo
        $resultado = enviarCertificadoATodosLosAutores($trabajo_id);
        
        $total_enviados += $resultado['exitosos'];
        $total_errores += $resultado['fallidos'];
        $total_destinatarios += $resultado['total'];
    }
    
    // Guardar resultados en la sesión para mostrar en la página
    $_SESSION['mensaje'] = "Proceso completado: $total_enviados certificados enviados correctamente, $total_errores con errores. Total de destinatarios: $total_destinatarios.";
    $_SESSION['tipo_mensaje'] = ($total_errores == 0) ? 'success' : 'warning';
    
    // Redirigir a la página principal
    header('Location: envio_certificados.php');
    exit;
}

// Procesar solicitud de envío individual
if (isset($_GET['enviar_individual']) && isset($_GET['id'])) {
    $trabajo_id = intval($_GET['id']);
    
    // Enviar a todos los autores del trabajo
    $resultado = enviarCertificadoATodosLosAutores($trabajo_id);
    
    if ($resultado['total'] > 0) {
        $mensaje = "Certificados enviados: {$resultado['exitosos']} exitosos";
        if ($resultado['fallidos'] > 0) {
            $mensaje .= ", {$resultado['fallidos']} fallidos";
        }
        $mensaje .= ". Total de destinatarios: {$resultado['total']}.";
        
        $_SESSION['mensaje'] = $mensaje;
        $_SESSION['tipo_mensaje'] = ($resultado['fallidos'] == 0) ? 'success' : 'warning';
    } else {
        $_SESSION['mensaje'] = "No se pudo enviar ningún certificado: no hay destinatarios con correo electrónico.";
        $_SESSION['tipo_mensaje'] = 'danger';
    }
    
    // Redirigir a la página principal
    header('Location: envio_certificados.php');
    exit;
}

// Si llegamos aquí, mostramos el formulario para seleccionar trabajos
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Sistema de Envío de Certificados</title>
    
    <!-- Bootstrap CSS -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet">
    
    <!-- Font Awesome -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    
    <!-- DataTables CSS -->
    <link rel="stylesheet" href="https://cdn.datatables.net/1.13.4/css/dataTables.bootstrap5.min.css">
    <link rel="stylesheet" href="https://cdn.datatables.net/select/1.6.2/css/select.bootstrap5.min.css">
    <link rel="stylesheet" href="https://cdn.datatables.net/responsive/2.4.1/css/responsive.bootstrap5.min.css">
    
    <!-- SweetAlert2 -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/sweetalert2@11.7.5/dist/sweetalert2.min.css">
    
    <style>
        :root {
            --primary-color: #015a5e;
            --primary-light: #327063;
            --accent-color: #007dd9;
            --success-color: #198754;
            --warning-color: #ffc107;
            --danger-color: #dc3545;
        }
        
        body {
            font-family: 'Montserrat', sans-serif;
            background-color: #f5f8fa;
        }
        
        .navbar-brand {
            font-weight: 700;
            color: white !important;
        }
        
        .bg-primary-custom {
            background-color: var(--primary-color);
        }
        
        .btn-primary-custom {
            background-color: var(--primary-color);
            border-color: var(--primary-color);
        }
        
        .btn-primary-custom:hover {
            background-color: var(--primary-light);
            border-color: var(--primary-light);
        }
        
        .card {
            border-radius: 10px;
            box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05);
            overflow: hidden;
        }
        
        .card-header {
            background-color: var(--primary-color);
            color: white;
            font-weight: 600;
        }
        
        .table thead th {
            background-color: #f0f5f5;
            color: var(--primary-color);
            font-weight: 600;
        }
        
        .status-badge {
            padding: 5px 10px;
            border-radius: 20px;
            font-size: 0.8rem;
            font-weight: 600;
        }
        
        .status-pending {
            background-color: #fff3cd;
            color: #856404;
        }
        
        .status-sent {
            background-color: #d1e7dd;
            color: #0f5132;
        }
        
        .status-error {
            background-color: #f8d7da;
            color: #842029;
        }
        
        .action-buttons .btn {
            margin-right: 5px;
        }
        
        .progress {
            height: 25px;
            border-radius: 5px;
        }
        
        .dataTables_wrapper .dataTables_info,
        .dataTables_wrapper .dataTables_length,
        .dataTables_wrapper .dataTables_filter {
            color: var(--primary-color);
        }
        
        .page-item.active .page-link {
            background-color: var(--primary-color);
            border-color: var(--primary-color);
        }
        
        .page-link {
            color: var(--primary-color);
        }
        
        #envio-progress-container {
            display: none;
        }
        
        .info-box {
            border-left: 4px solid var(--primary-color);
            background-color: #e8f4f4;
            padding: 15px;
            margin-bottom: 20px;
            border-radius: 5px;
        }
    </style>
</head>
<body>
    <!-- Barra de navegación -->
    <nav class="navbar navbar-dark bg-primary-custom mb-4">
        <div class="container">
            <a class="navbar-brand" href="#">
                <i class="fas fa-certificate me-2"></i>
                Sistema de Envío de Certificados
            </a>
        </div>
    </nav>
    
    <div class="container mb-5">
        <!-- Mensajes de notificación -->
        <?php if (isset($_SESSION['mensaje'])): ?>
        <div class="alert alert-<?= $_SESSION['tipo_mensaje'] ?> alert-dismissible fade show" role="alert">
            <i class="fas fa-info-circle me-2"></i>
            <?= $_SESSION['mensaje'] ?>
            <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
        </div>
        <?php 
            // Limpiar mensajes después de mostrarlos
            unset($_SESSION['mensaje']); 
            unset($_SESSION['tipo_mensaje']);
        endif; 
        ?>
        
        <!-- Tarjeta de progreso (se muestra durante el envío masivo) -->
        <div class="card mb-4" id="envio-progress-container">
            <div class="card-header">
                <i class="fas fa-sync fa-spin me-2"></i>
                Progreso de Envío
            </div>
            <div class="card-body">
                <div class="progress mb-3">
                    <div class="progress-bar progress-bar-striped progress-bar-animated" 
                         role="progressbar" 
                         id="envio-progress-bar"
                         style="width: 0%"
                         aria-valuenow="0" 
                         aria-valuemin="0" 
                         aria-valuemax="100">0%</div>
                </div>
                <p class="text-center" id="envio-progress-text">Preparando envío de certificados...</p>
            </div>
        </div>
        
        <!-- Panel principal -->
        <div class="card">
            <div class="card-header d-flex justify-content-between align-items-center">
                <span><i class="fas fa-list me-2"></i> Gestión de Certificados</span>
                <div>
                    <button type="button" class="btn btn-success" id="btn-enviar-seleccionados" disabled>
                        <i class="fas fa-paper-plane me-2"></i>
                        Enviar Seleccionados
                    </button>
                    <button type="button" class="btn btn-primary-custom" id="btn-seleccionar-todos">
                        <i class="fas fa-check-square me-2"></i>
                        Seleccionar Todos
                    </button>
                </div>
            </div>
            <div class="card-body">
                <div class="info-box mb-4">
                    <h5><i class="fas fa-info-circle me-2"></i>Instrucciones:</h5>
                    <p>Este sistema le permite enviar certificados de participación a los autores de cada trabajo. Para cada trabajo seleccionado, NO se enviará el certificado al autor corresponsal, SOLO a todos los autores adicionales que tengan email registrado.</p>
                    <p class="mb-0"><strong>Nota:</strong> El sistema utilizará todas las direcciones de correo electrónico registradas para cada trabajo.</p>
                </div>
                
                <!-- Formulario para envío masivo (oculto) -->
                <form id="form-envio-masivo" method="post" action="">
                    <input type="hidden" name="enviar_certificados" value="1">
                    <div id="trabajos-seleccionados-container">
                        <!-- Los checkboxes se generarán dinámicamente -->
                    </div>
                </form>
                
                <!-- Tabla de trabajos -->
                <div class="table-responsive">
                    <table class="table table-striped table-hover" id="tabla-trabajos">
                        <thead>
                            <tr>
                                <th>
                                    <div class="form-check">
                                        <input class="form-check-input" type="checkbox" id="select-all">
                                    </div>
                                </th>
                                <th>ID</th>
                                <th>Codigo</th>
                                <th>Título</th>
                                <th>Autor Corresponsal</th>
                                <th>Email</th>
                                <th>Autores Adicionales</th>
                                <th>Estado</th>
                                <th>Acciones</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php
                            // Conectar a la base de datos
                            $conn = Activarmysql();
                            
                            // Consulta para obtener los trabajos con sus estados de envío
                            $sql = "SELECT t.id, t.codigo,t.titulo, 
                                           t.nombre_corresponsal, t.apellido_corresponsal, 
                                           t.email, 
                                           t.titulo_autor1, t.autor1, t.apellido_autor1, t.email_autor1,
                                           t.titulo_autor2, t.autor2, t.apellido_autor2, t.email_autor2,
                                           t.titulo_autor3, t.autor3, t.apellido_autor3, t.email_autor3,
                                           t.titulo_autor4, t.autor4, t.apellido_autor4, t.email_autor4,
                                           t.titulo_autor5, t.autor5, t.apellido_autor5, t.email_autor5,
                                           t.titulo_autor6, t.autor6, t.apellido_autor6, t.email_autor6,
                                           t.titulo_autor7, t.autor7, t.apellido_autor7, t.email_autor7,
                                           t.titulo_autor8, t.autor8, t.apellido_autor8, t.email_autor8,
                                           t.titulo_autor9, t.autor9, t.apellido_autor9, t.email_autor9,
                                           t.titulo_autor10, t.autor10, t.apellido_autor10, t.email_autor10,
                                          MAX(l.fecha_envio) AS ultima_fecha_envio,
                                           MAX(l.exitoso) AS ultimo_estado
                                    FROM ttrabajo t
                                    LEFT JOIN tlog_envios_certificados l ON t.id = l.trabajo_id
                                    GROUP BY t.id
                                    ORDER BY t.id DESC";
                            
                            $result = $conn->query($sql);
                            
                            if ($result && $result->num_rows > 0) {
                                while ($row = $result->fetch_assoc()) {
                                    // Determinar el estado del envío
                                    $estado = 'Pendiente';
                                    $clase_estado = 'status-pending';
                                    $icono_estado = 'fa-clock';
                                    
                                    if (!empty($row['ultima_fecha_envio'])) {
                                        if ($row['ultimo_estado'] == 1) {
                                            $estado = 'Enviado';
                                            $clase_estado = 'status-sent';
                                            $icono_estado = 'fa-check-circle';
                                        } else {
                                            $estado = 'Error';
                                            $clase_estado = 'status-error';
                                            $icono_estado = 'fa-exclamation-circle';
                                        }
                                    }
                                    
                                    // Preparar el nombre completo del corresponsal
                                    $nombre_completo = $row['nombre_corresponsal'] . ' ' . $row['apellido_corresponsal'];
                                    
                                    // Contar emails adicionales y obtener información de los autores
                                    $emails_adicionales = 0;
                                    $autores_adicionales = [];
                                    
                                    for ($i = 1; $i <= 10; $i++) {
                                        $campo_email = 'email_autor' . $i;
                                        $campo_titulo = 'titulo_autor' . $i;
                                        $campo_nombre = 'autor' . $i;
                                        $campo_apellido = 'apellido_autor' . $i;
                                        
                                        if (!empty($row[$campo_email])) {
                                            $emails_adicionales++;
                                            
                                        
                                            // Construir nombre completo del autor
                                        $nombre_autor = '';
                                        if (!empty($row[$campo_titulo])) {
                                            // Eliminar espacios, saltos de línea y retornos de carro
                                            $titulo_limpio = str_replace(["\r", "\n", "\r\n"], '', trim($row[$campo_titulo]));
                                            if ($titulo_limpio !== '') {
                                                $nombre_autor .= $titulo_limpio;
                                            }
                                        }
                                        
                                        if (!empty($row[$campo_nombre])) {
                                            // Eliminar espacios, saltos de línea y retornos de carro
                                            $nombre_limpio = str_replace(["\r", "\n", "\r\n"], '', trim($row[$campo_nombre]));
                                            if ($nombre_limpio !== '') {
                                                $nombre_autor .= $nombre_limpio;
                                            }
                                        }
                                        
                                        if (!empty($row[$campo_apellido])) {
                                            // Solo añadir espacio si ya tenemos contenido y no termina en espacio
                                            if ($nombre_autor !== '' && substr($nombre_autor, -1) !== ' ') {
                                                $nombre_autor .= ' ';
                                            }
                                            
                                            // Eliminar espacios, saltos de línea y retornos de carro
                                            $apellido_limpio = str_replace(["\r", "\n", "\r\n"], '', trim($row[$campo_apellido]));
                                            if ($apellido_limpio !== '') {
                                                $nombre_autor .= $apellido_limpio;
                                            }
                                        }
                                        
                                        // Asegurarse de que no haya espacios extra al principio o final
                                        $nombre_autor = trim($nombre_autor);
                                        
                                        // Adicional: usar una expresión regular para reemplazar múltiples espacios con uno solo
                                        $nombre_autor = preg_replace('/\s+/', ' ', $nombre_autor);
                     
                                            // Si no hay nombre, usar genérico
                                            if (trim($nombre_autor) === '') {
                                                $nombre_autor = 'Autor ' . $i;
                                            }
                                            
                                            $autores_adicionales[] = [
                                                'nombre' => $nombre_autor,
                                                'email' => $row[$campo_email]
                                            ];
                                        }
                                    }
                                    
                                    // Verificar si hay email principal o adicionales para determinar si se puede enviar
                                    $tiene_email = !empty($row['email']) || $emails_adicionales > 0;
                                    $email_display = !empty($row['email']) ? $row['email'] : '<span class="text-danger">No disponible</span>';
                                    
                                    // Generar fila de tabla
                                    echo '<tr>';
                                    echo '<td>';
                                    if ($tiene_email) {
                                        echo '<div class="form-check">';
                                        echo '<input class="form-check-input trabajo-checkbox" type="checkbox" value="' . $row['id'] . '" data-id="' . $row['id'] . '">';
                                        echo '</div>';
                                    }
                                    echo '</td>';
                                    echo '<td>' . $row['id'] . '</td>';
                                    echo '<td>' . $row['codigo'] . '</td>';
                                    echo '<td>' . htmlspecialchars($row['titulo']) . '</td>';
                                    echo '<td>' . htmlspecialchars($nombre_completo) . '</td>';
                                    echo '<td>' . $email_display . '</td>';
                                    echo '<td>';
                                    if ($emails_adicionales > 0) {
                                        echo '<span class="badge bg-info">' . $emails_adicionales . ' autor(es) adicional(es)</span>';
                                        echo '<button class="btn btn-sm btn-outline-info ms-1 ver-emails" data-bs-toggle="tooltip" title="Ver autores adicionales" data-id="' . $row['id'] . '" data-autores=\'' . json_encode($autores_adicionales) . '\'>';
                                        echo '<i class="fas fa-eye"></i>';
                                        echo '</button>';
                                    } else {
                                        echo '<span class="text-muted">Ninguno</span>';
                                    }
                                    echo '</td>';
                                    echo '<td><span class="status-badge ' . $clase_estado . '"><i class="fas ' . $icono_estado . ' me-1"></i>' . $estado . '</span></td>';
                                    echo '<td class="action-buttons">';
                                    
                                    // Botón para ver certificado
                                    echo '<a href="certificado_participacion.php?export_certificate=1&id=' . $row['id'] . '" class="btn btn-sm btn-info" target="_blank" title="Ver Certificado">';
                                    echo '<i class="fas fa-eye"></i>';
                                    echo '</a>';
                                    
                                    // Botón para enviar individual (solo si tiene email)
                                    if ($tiene_email) {
                                        echo '<a href="envio_certificados.php?enviar_individual=1&id=' . $row['id'] . '" class="btn btn-sm btn-primary-custom enviar-individual" data-id="' . $row['id'] . '" title="Enviar Certificados">';
                                        echo '<i class="fas fa-paper-plane"></i>';
                                        echo '</a>';
                                    } else {
                                        echo '<button class="btn btn-sm btn-secondary" disabled title="No se puede enviar (sin emails)">';
                                        echo '<i class="fas fa-paper-plane"></i>';
                                        echo '</button>';
                                    }
                                    
                                    // Historial de envíos (si aplica)
                                    if (!empty($row['ultima_fecha_envio'])) {
                                        echo '<button class="btn btn-sm btn-outline-secondary ver-historial" data-id="' . $row['id'] . '" title="Ver Historial">';
                                        echo '<i class="fas fa-history"></i>';
                                        echo '</button>';
                                    }
                                    
                                    echo '</td>';
                                    echo '</tr>';
                                }
                            } else {
                                echo '<tr><td colspan="9" class="text-center">No hay trabajos disponibles</td></tr>';
                            }
                            
                            $conn->close();
                            ?>
                        </tbody>
                    </table>
                </div>
            </div>
            <div class="card-footer text-muted">
                <div class="d-flex justify-content-between align-items-center">
                    <span>
                        <i class="fas fa-info-circle me-1"></i>
                        Selecciona los trabajos para enviar los certificados a todos los autores
                    </span>
                    <span>
                        <i class="fas fa-calendar-alt me-1"></i>
                        <?php echo date('d/m/Y'); ?>
                    </span>
                </div>
            </div>
        </div>
    </div>
    
    <!-- Modal para historial de envíos -->
    <div class="modal fade" id="historialModal" tabindex="-1" aria-labelledby="historialModalLabel" aria-hidden="true">
        <div class="modal-dialog modal-lg">
            <div class="modal-content">
                <div class="modal-header bg-primary-custom text-white">
                    <h5 class="modal-title" id="historialModalLabel">
                        <i class="fas fa-history me-2"></i>
                        Historial de Envíos
                    </h5>
                    <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button>
                </div>
                <div class="modal-body">
                    <div class="table-responsive">
                        <table class="table table-striped" id="tabla-historial">
                            <thead>
                                <tr>
                                    <th>Fecha</th>
                                    <th>Email</th>
                                    <th>Destinatario</th>
                                    <th>Estado</th>
                                    <th>Mensaje</th>
                                </tr>
                            </thead>
                            <tbody id="historial-contenido">
                                <!-- El contenido se cargará dinámicamente -->
                            </tbody>
                        </table>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cerrar</button>
                </div>
            </div>
        </div>
    </div>
    
    <!-- Modal para visualizar emails adicionales -->
    <div class="modal fade" id="emailsModal" tabindex="-1" aria-labelledby="emailsModalLabel" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header bg-primary-custom text-white">
                    <h5 class="modal-title" id="emailsModalLabel">
                        <i class="fas fa-users me-2"></i>
                        Autores Adicionales
                    </h5>
                    <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button>
                </div>
                <div class="modal-body">
                    <div class="list-group" id="emails-adicionales-lista">
                        <!-- La lista de emails se cargará dinámicamente -->
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cerrar</button>
                </div>
            </div>
        </div>
    </div>
    
    <!-- Scripts JavaScript -->
    <script src="https://code.jquery.com/jquery-3.7.0.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"></script>
    <script src="https://cdn.datatables.net/1.13.4/js/jquery.dataTables.min.js"></script>
    <script src="https://cdn.datatables.net/1.13.4/js/dataTables.bootstrap5.min.js"></script>
    <script src="https://cdn.datatables.net/select/1.6.2/js/dataTables.select.min.js"></script>
    <script src="https://cdn.datatables.net/responsive/2.4.1/js/dataTables.responsive.min.js"></script>
    <script src="https://cdn.datatables.net/responsive/2.4.1/js/responsive.bootstrap5.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11.7.5/dist/sweetalert2.all.min.js"></script>
    
    <script>
    $(document).ready(function() {
        // Inicializar tooltips
        var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
        tooltipTriggerList.map(function (tooltipTriggerEl) {
            return new bootstrap.Tooltip(tooltipTriggerEl)
        });
        
        // Inicializar DataTables
        var tabla = $('#tabla-trabajos').DataTable({
            responsive: true,
            language: {
                url: '//cdn.datatables.net/plug-ins/1.13.4/i18n/es-ES.json'
            },
            columnDefs: [
                { orderable: false, targets: [0, 7] },
                { width: "5%", targets: 0 }
            ],
            order: [[1, 'desc']]
        });
        
        // Gestión de selección de trabajos
        $('#select-all').on('click', function() {
            $('.trabajo-checkbox').prop('checked', this.checked);
            actualizarBotonEnvio();
        });
        
        $(document).on('change', '.trabajo-checkbox', function() {
            actualizarBotonEnvio();
        });
        
        $('#btn-seleccionar-todos').on('click', function() {
            if ($('#select-all').prop('checked')) {
                $('#select-all').prop('checked', false);
                $('.trabajo-checkbox').prop('checked', false);
            } else {
                $('#select-all').prop('checked', true);
                $('.trabajo-checkbox').prop('checked', true);
            }
            actualizarBotonEnvio();
        });
        
        function actualizarBotonEnvio() {
            var seleccionados = $('.trabajo-checkbox:checked').length;
            $('#btn-enviar-seleccionados').prop('disabled', seleccionados === 0);
        }
        
        // Envío masivo de certificados
        $('#btn-enviar-seleccionados').on('click', function() {
            var seleccionados = $('.trabajo-checkbox:checked').length;
            
            // Confirmar antes de enviar
            Swal.fire({
                title: '¿Confirmar envío masivo?',
                html: `Está a punto de enviar certificados para <strong>${seleccionados}</strong> trabajo(s).<br>
                      Esta acción enviará correos a todos los autores con email registrado.`,
                icon: 'question',
                showCancelButton: true,
                confirmButtonColor: '#015a5e',
                cancelButtonColor: '#6c757d',
                confirmButtonText: 'Sí, enviar',
                cancelButtonText: 'Cancelar'
            }).then((result) => {
                if (result.isConfirmed) {
                    // Limpiar el contenedor de trabajos seleccionados
                    $('#trabajos-seleccionados-container').empty();
                    
                    // Agregar inputs para cada trabajo seleccionado
                    $('.trabajo-checkbox:checked').each(function() {
                        var trabajoId = $(this).val();
                        $('#trabajos-seleccionados-container').append(
                            `<input type="hidden" name="trabajos_seleccionados[]" value="${trabajoId}">`
                        );
                    });
                    
                    // Mostrar barra de progreso
                    $('#envio-progress-container').show();
                    $('#envio-progress-bar').css('width', '0%').attr('aria-valuenow', 0).text('0%');
                    $('#envio-progress-text').text('Iniciando envío de certificados...');
                    
                    // Simular progreso (opcional, en producción podría usar AJAX para actualización real)
                    var progress = 0;
                    var interval = setInterval(function() {
                        progress += 5;
                        if (progress <= 90) {
                            $('#envio-progress-bar').css('width', progress + '%').attr('aria-valuenow', progress).text(progress + '%');
                            $('#envio-progress-text').text('Procesando envío de certificados...');
                        }
                        if (progress === 90) {
                            clearInterval(interval);
                        }
                    }, 500);
                    
                    // Enviar el formulario
                    setTimeout(function() {
                        $('#form-envio-masivo').submit();
                    }, 1000);
                }
            });
        });
        
        // Envío individual con confirmación
        $(document).on('click', '.enviar-individual', function(e) {
            e.preventDefault();
            
            var url = $(this).attr('href');
            var id = $(this).data('id');
            
            Swal.fire({
                title: '¿Confirmar envío?',
                html: `Está a punto de enviar certificados para el trabajo ID <strong>${id}</strong>.<br>
                      Esta acción enviará correos a todos los autores con email registrado.`,
                icon: 'question',
                showCancelButton: true,
                confirmButtonColor: '#015a5e',
                cancelButtonColor: '#6c757d',
                confirmButtonText: 'Sí, enviar',
                cancelButtonText: 'Cancelar'
            }).then((result) => {
                if (result.isConfirmed) {
                    window.location.href = url;
                }
            });
        });
        
        // Ver historial de envíos
        $(document).on('click', '.ver-historial', function() {
            var id = $(this).data('id');
            
            // Limpiar contenido previo
            $('#historial-contenido').html('<tr><td colspan="5" class="text-center"><i class="fas fa-spinner fa-spin"></i> Cargando...</td></tr>');
            
            // Mostrar el modal
            $('#historialModal').modal('show');
            
            // Cargar el historial vía AJAX
            $.ajax({
                url: 'obtener_historial_envios.php',
                type: 'GET',
                data: { id: id },
                dataType: 'json',
                success: function(data) {
                    if (data.length > 0) {
                        var html = '';
                        data.forEach(function(envio) {
                            // Estado del envío
                            var estadoClase = envio.exitoso == 1 ? 'success' : 'danger';
                            var estadoTexto = envio.exitoso == 1 ? 'Exitoso' : 'Fallido';
                            var tipoDestinatario = determinarTipoDestinatario(envio.tipo_destinatario);
                            
                            html += `<tr>
                                        <td>${formatFecha(envio.fecha_envio)}</td>
                                        <td>${envio.email_destino}</td>
                                        <td>${envio.nombre_destinatario || tipoDestinatario}</td>
                                        <td><span class="badge bg-${estadoClase}">${estadoTexto}</span></td>
                                        <td>${envio.error_mensaje || '-'}</td>
                                    </tr>`;
                        });
                        $('#historial-contenido').html(html);
                    } else {
                        $('#historial-contenido').html('<tr><td colspan="5" class="text-center">No hay registros de envíos para este trabajo</td></tr>');
                    }
                },
                error: function() {
                    $('#historial-contenido').html('<tr><td colspan="5" class="text-center text-danger">Error al cargar el historial</td></tr>');
                }
            });
        });
        
        // Ver autores adicionales
        $(document).on('click', '.ver-emails', function() {
            var id = $(this).data('id');
            var autores = $(this).data('autores');
            
            // Construir contenido HTML
            var html = '';
            
            if (autores && autores.length > 0) {
                autores.forEach(function(autor, index) {
                    html += `<div class="list-group-item list-group-item-action">
                                <div class="d-flex w-100 justify-content-between">
                                    <h6 class="mb-1">${autor.nombre}</h6>
                                </div>
                                <p class="mb-1">${autor.email}</p>
                            </div>`;
                });
                
                $('#emails-adicionales-lista').html(html);
            } else {
                // Si no hay datos en el atributo data-autores, cargar vía AJAX
                $('#emails-adicionales-lista').html('<div class="text-center"><i class="fas fa-spinner fa-spin"></i> Cargando...</div>');
                
                $.ajax({
                    url: 'obtener_emails_autores.php',
                    type: 'GET',
                    data: { id: id },
                    dataType: 'json',
                    success: function(data) {
                        if (Object.keys(data).length > 0) {
                            var html = '';
                            
                            // Recolectar información de autores
                            var autoresInfo = [];
                            
                            for (let i = 1; i <= 10; i++) {
                                if (data['email_autor' + i]) {
                                    let nombreCompleto = '';
                                    
                                    // Construir nombre completo
                                    if (data['titulo_autor' + i]) {
                                        nombreCompleto += data['titulo_autor' + i] + ' ';
                                    }
                                    
                                    if (data['autor' + i]) {
                                        nombreCompleto += data['autor' + i];
                                    }
                                    
                                    if (data['apellido_autor' + i]) {
                                        if (data['autor' + i]) {
                                            nombreCompleto += ' ';
                                        }
                                        nombreCompleto += data['apellido_autor' + i];
                                    }
                                    
                                    // Si no hay nombre, usar genérico
                                    if (nombreCompleto.trim() === '') {
                                        nombreCompleto = 'Autor ' + i;
                                    }
                                    
                                    html += `<div class="list-group-item list-group-item-action">
                                                <div class="d-flex w-100 justify-content-between">
                                                    <h6 class="mb-1">${nombreCompleto}</h6>
                                                </div>
                                                <p class="mb-1">${data['email_autor' + i]}</p>
                                            </div>`;
                                }
                            }
                            
                            $('#emails-adicionales-lista').html(html);
                        } else {
                            $('#emails-adicionales-lista').html('<div class="alert alert-warning">No se encontraron autores adicionales para este trabajo</div>');
                        }
                    },
                    error: function() {
                        $('#emails-adicionales-lista').html('<div class="alert alert-danger">Error al cargar la información de autores</div>');
                    }
                });
            }
            
            // Mostrar el modal
            $('#emailsModal').modal('show');
        });
        
        // Funciones auxiliares
        function formatFecha(fechaStr) {
            var fecha = new Date(fechaStr);
            return fecha.toLocaleString('es-ES');
        }
        
        function determinarTipoDestinatario(tipo) {
            if (!tipo) return 'Desconocido';
            if (tipo === 'corresponsal') return 'Autor Corresponsal';
            if (tipo.startsWith('autor')) {
                var num = tipo.replace('autor', '');
                return 'Autor ' + num;
            }
            return tipo;
        }
    });
    </script>
</body>
</html>