<?php
/**
 * Test de Email con PDF Adjunto
 * Simula el envío de email de confirmación con PDF
 */

error_reporting(E_ALL);
ini_set('display_errors', '1');

require_once __DIR__ . '/config/bootstrap.php';

use App\Services\EmailService;
use App\Services\Database;

$db = Database::getInstance();

?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Test Email con PDF</title>
    <style>
        body {
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
            max-width: 800px;
            margin: 50px auto;
            padding: 20px;
            background: #f5f5f5;
        }
        .card {
            background: white;
            border-radius: 8px;
            padding: 30px;
            box-shadow: 0 2px 8px rgba(0,0,0,0.1);
            margin-bottom: 20px;
        }
        h1 { color: #333; margin-top: 0; }
        h2 { color: #4F46E5; border-bottom: 2px solid #4F46E5; padding-bottom: 10px; }
        .success { background: #d1fae5; color: #065f46; padding: 15px; border-radius: 6px; margin: 15px 0; }
        .error { background: #fee2e2; color: #991b1b; padding: 15px; border-radius: 6px; margin: 15px 0; }
        .warning { background: #fef3c7; color: #92400e; padding: 15px; border-radius: 6px; margin: 15px 0; }
        .info { background: #dbeafe; color: #1e40af; padding: 15px; border-radius: 6px; margin: 15px 0; }
        pre { background: #1e1e1e; color: #d4d4d4; padding: 15px; border-radius: 6px; overflow-x: auto; }
        table { width: 100%; border-collapse: collapse; margin: 15px 0; }
        th, td { padding: 10px; text-align: left; border-bottom: 1px solid #e5e7eb; }
        th { background: #f9fafb; font-weight: 600; }
        .btn {
            display: inline-block;
            background: #4F46E5;
            color: white;
            padding: 10px 20px;
            border-radius: 6px;
            text-decoration: none;
            margin: 10px 5px;
        }
        .btn:hover { background: #4338ca; }
        .btn-secondary {
            background: #6b7280;
        }
        .btn-secondary:hover { background: #4b5563; }
    </style>
</head>
<body>
    <div class="card">
        <h1>🧪 Test de Email con PDF Adjunto</h1>
        <p>Esta página te ayuda a verificar que el sistema de email con PDF funciona correctamente.</p>
    </div>

    <?php
    $emailService = new EmailService();
    $isEnabled = $emailService->isEnabled();
    ?>

    <div class="card">
        <h2>1. Estado del Servicio de Email</h2>

        <?php if ($isEnabled): ?>
            <div class="success">
                ✅ <strong>Email HABILITADO</strong> - Los emails se enviarán
            </div>
            <table>
                <tr><th>Configuración</th><th>Valor</th></tr>
                <tr><td>MAIL_HOST</td><td><?= htmlspecialchars($_ENV['MAIL_HOST'] ?? 'no configurado') ?></td></tr>
                <tr><td>MAIL_PORT</td><td><?= htmlspecialchars($_ENV['MAIL_PORT'] ?? 'no configurado') ?></td></tr>
                <tr><td>MAIL_USER</td><td><?= htmlspecialchars($_ENV['MAIL_USER'] ?? 'no configurado') ?></td></tr>
                <tr><td>MAIL_FROM</td><td><?= htmlspecialchars($_ENV['MAIL_FROM'] ?? 'no configurado') ?></td></tr>
                <tr><td>MAIL_ENCRYPTION</td><td><?= htmlspecialchars($_ENV['MAIL_ENCRYPTION'] ?? 'no configurado') ?></td></tr>
            </table>
        <?php else: ?>
            <div class="warning">
                ⚠️ <strong>Email DESHABILITADO</strong> - Los emails se simularán pero no se enviarán
            </div>
            <p>Para habilitar, configura <code>MAIL_ENABLED=true</code> en tu archivo <code>.env</code></p>
        <?php endif; ?>
    </div>

    <div class="card">
        <h2>2. Contratos Firmados Recientes</h2>

        <?php
        $recentSignatures = $db->query("
            SELECT
                c.id as contract_id,
                c.titulo,
                c.cliente_nombre,
                c.cliente_email,
                s.firmado_at,
                s.pdf_path,
                s.numero_documento
            FROM signatures s
            INNER JOIN contracts c ON s.contract_id = c.id
            ORDER BY s.firmado_at DESC
            LIMIT 5
        ");

        if (empty($recentSignatures)): ?>
            <div class="info">
                ℹ️ No hay contratos firmados todavía. Firma un contrato primero para probar.
            </div>
            <a href="public/admin/crear-contrato.php" class="btn">Crear Contrato</a>
        <?php else: ?>
            <table>
                <tr>
                    <th>ID</th>
                    <th>Título</th>
                    <th>Cliente</th>
                    <th>Email</th>
                    <th>Firmado</th>
                    <th>PDF</th>
                    <th>Acción</th>
                </tr>
                <?php foreach ($recentSignatures as $sig): ?>
                    <tr>
                        <td><?= $sig['contract_id'] ?></td>
                        <td><?= htmlspecialchars(substr($sig['titulo'], 0, 30)) ?></td>
                        <td><?= htmlspecialchars($sig['cliente_nombre']) ?></td>
                        <td><?= htmlspecialchars($sig['cliente_email']) ?></td>
                        <td><?= date('d/m/Y H:i', strtotime($sig['firmado_at'])) ?></td>
                        <td>
                            <?php
                            $pdfExists = !empty($sig['pdf_path']) && file_exists(__DIR__ . '/' . $sig['pdf_path']);
                            echo $pdfExists ? '✅' : '❌';
                            ?>
                        </td>
                        <td>
                            <a href="?test=<?= $sig['contract_id'] ?>" class="btn" style="font-size:12px;padding:5px 10px;">
                                Reenviar Email
                            </a>
                        </td>
                    </tr>
                <?php endforeach; ?>
            </table>
        <?php endif; ?>
    </div>

    <?php
    if (isset($_GET['test'])) {
        $contractId = (int)$_GET['test'];

        echo '<div class="card">';
        echo '<h2>3. Resultado del Test</h2>';

        // Obtener contrato y firma
        $contract = $db->fetchOne("SELECT * FROM contracts WHERE id = :id", [':id' => $contractId]);
        $signature = $db->fetchOne("SELECT * FROM signatures WHERE contract_id = :id", [':id' => $contractId]);

        if (!$contract || !$signature) {
            echo '<div class="error">❌ Contrato o firma no encontrado</div>';
        } else {
            echo '<div class="info">';
            echo "<strong>Contrato:</strong> {$contract['titulo']}<br>";
            echo "<strong>Cliente:</strong> {$contract['cliente_nombre']}<br>";
            echo "<strong>Email:</strong> {$contract['cliente_email']}<br>";
            echo '</div>';

            // Verificar PDF - usar storage_path() helper
            $pdfPath = null;
            if (!empty($signature['pdf_path'])) {
                $pdfPathAbsolute = storage_path($signature['pdf_path']);

                if (file_exists($pdfPathAbsolute)) {
                    $pdfPath = $pdfPathAbsolute;
                    echo '<div class="success">✅ PDF encontrado: ' . htmlspecialchars($signature['pdf_path']) . '</div>';
                    echo '<p>Path absoluto: <code>' . htmlspecialchars($pdfPathAbsolute) . '</code></p>';
                    echo '<p>Tamaño del PDF: ' . number_format(filesize($pdfPath) / 1024, 2) . ' KB</p>';
                } else {
                    echo '<div class="warning">⚠️ PDF no encontrado en: ' . htmlspecialchars($pdfPathAbsolute) . '</div>';
                    echo '<div class="error">El email se enviará SIN adjunto</div>';
                }
            } else {
                echo '<div class="error">⚠️ pdf_path está vacío en la base de datos</div>';
            }

            // Intentar enviar email
            try {
                echo '<div class="info">📧 Enviando email...</div>';

                $result = $emailService->sendSignatureConfirmation($contract, $signature, $pdfPath);

                if ($result) {
                    if ($isEnabled) {
                        echo '<div class="success">';
                        echo '✅ <strong>Email enviado exitosamente</strong><br>';
                        echo "Destinatario: {$contract['cliente_email']}<br>";
                        echo "PDF adjunto: " . ($pdfPath ? 'SÍ' : 'NO') . "<br>";
                        echo '</div>';

                        echo '<div class="info">';
                        echo '📬 <strong>Revisa la bandeja de entrada del cliente</strong><br>';
                        echo 'Email: ' . htmlspecialchars($contract['cliente_email']);
                        echo '</div>';
                    } else {
                        echo '<div class="warning">';
                        echo '⚠️ <strong>Email SIMULADO (MAIL_ENABLED=false)</strong><br>';
                        echo "El email NO se envió realmente, pero el código funcionó correctamente.<br>";
                        echo "PDF que se habría adjuntado: " . ($pdfPath ? 'SÍ' : 'NO') . "<br>";
                        echo '</div>';
                    }
                } else {
                    echo '<div class="error">❌ Error al enviar email - Revisa los logs</div>';
                }

            } catch (Exception $e) {
                echo '<div class="error">';
                echo '❌ <strong>Error:</strong> ' . htmlspecialchars($e->getMessage());
                echo '</div>';
            }

            // Mostrar logs
            $logFile = __DIR__ . '/storage/logs/email.log';
            if (file_exists($logFile)) {
                $logs = file_get_contents($logFile);
                $recentLogs = implode("\n", array_slice(explode("\n", $logs), -20));

                echo '<h3>Últimos 20 logs de email:</h3>';
                echo '<pre style="max-height:300px;overflow-y:auto;">' . htmlspecialchars($recentLogs) . '</pre>';
            }
        }

        echo '</div>';
    }
    ?>

    <div class="card">
        <h2>📚 Guía de Testing</h2>

        <h3>Opción 1: Mailtrap (Recomendado)</h3>
        <ol>
            <li>Regístrate en <a href="https://mailtrap.io" target="_blank">mailtrap.io</a></li>
            <li>Copia las credenciales SMTP</li>
            <li>Configura en <code>.env</code>:
                <pre>MAIL_ENABLED=true
MAIL_HOST=sandbox.smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USER=tu-username
MAIL_PASS=tu-password</pre>
            </li>
            <li>Haz clic en "Reenviar Email" arriba</li>
            <li>Revisa tu inbox en Mailtrap</li>
        </ol>

        <h3>Opción 2: Gmail Real</h3>
        <ol>
            <li>Genera una contraseña de aplicación en Gmail</li>
            <li>Configura en <code>.env</code>:
                <pre>MAIL_ENABLED=true
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USER=tu-email@gmail.com
MAIL_PASS=xxxx-xxxx-xxxx-xxxx</pre>
            </li>
            <li>Haz clic en "Reenviar Email" arriba</li>
            <li>Revisa tu Gmail</li>
        </ol>

        <h3>Opción 3: Solo verificar logs</h3>
        <ol>
            <li>Deja <code>MAIL_ENABLED=false</code></li>
            <li>Haz clic en "Reenviar Email" arriba</li>
            <li>Revisa los logs más abajo</li>
        </ol>
    </div>

    <div class="card" style="text-align:center;">
        <a href="test-email-pdf.php" class="btn-secondary btn">🔄 Recargar Página</a>
        <a href="public/admin/crear-contrato.php" class="btn">➕ Crear Nuevo Contrato</a>
        <a href="debug-session.php" class="btn-secondary">🔍 Debug Sesión</a>
    </div>

</body>
</html>
