<?php
/**
 * Página: Añadir Invitado
 */

$eventoId = getEventoId();
$evento = obtenerEvento($eventoId);
$error = '';
$success = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $nombre_cortesia = sanitize($_POST['nombre_cortesia'] ?? 'Sr.');
    $nombre_invitado = sanitize($_POST['nombre_invitado'] ?? '');
    $email = sanitize($_POST['email'] ?? '');
    $telefono = sanitize($_POST['telefono'] ?? '');
    $invitacion_de = sanitize($_POST['invitacion_de'] ?? '');
    $invitacion_de_personalizado = sanitize($_POST['invitacion_de_personalizado'] ?? '');
    $numero_admisiones = intval($_POST['numero_admisiones'] ?? 1);
    $nombres_admisiones = $_POST['nombres_admisiones'] ?? [];
    
    // Si es personalizado, usar el texto personalizado
    if ($invitacion_de === 'Personalizado' && !empty($invitacion_de_personalizado)) {
        $invitacion_de = $invitacion_de_personalizado;
    }
    
    if (empty($nombre_invitado)) {
        $error = 'El nombre del invitado es requerido';
    } elseif ($email && !validarEmail($email)) {
        $error = 'El email no es válido';
    } elseif ($telefono && !validarTelefono($telefono)) {
        $error = 'El teléfono no es válido';
    } else {
        try {
            $pdo->beginTransaction();
            
            // Generar token único
            $token = generarTokenInvitado($eventoId);
            
            // Insertar invitado
            $stmt = $pdo->prepare("
                INSERT INTO invitados 
                (evento_id, token, nombre_cortesia, nombre_invitado, email, telefono, invitacion_de, numero_admisiones)
                VALUES (?, ?, ?, ?, ?, ?, ?, ?)
            ");
            $stmt->execute([
                $eventoId,
                $token,
                $nombre_cortesia,
                $nombre_invitado,
                $email ?: null,
                $telefono ?: null,
                $invitacion_de ?: null,
                $numero_admisiones
            ]);
            
            $invitadoId = $pdo->lastInsertId();
            
            // Insertar admisiones
            if ($numero_admisiones > 0 && !empty($nombres_admisiones)) {
                $stmt = $pdo->prepare("INSERT INTO admisiones (invitado_id, nombre_acompanante, orden) VALUES (?, ?, ?)");
                foreach ($nombres_admisiones as $index => $nombre) {
                    if (!empty(trim($nombre))) {
                        $stmt->execute([$invitadoId, sanitize($nombre), $index + 1]);
                    }
                }
            }
            
            $pdo->commit();
            
            registrarLog($eventoId, 'invitado', 'Crear', "Nuevo invitado: $nombre_invitado");
            
            // Enviar email de invitación si tiene correo
            $mensajeEmail = '';
            if (!empty($email)) {
                try {
                    require_once __DIR__ . '/../../includes/email_functions.php';
                    $resultadoEmail = enviarEmailInvitacion($invitadoId);
                    if ($resultadoEmail['success']) {
                        $stmt = $pdo->prepare("UPDATE invitados SET email_enviado = 1, fecha_email_enviado = NOW() WHERE id = ?");
                        $stmt->execute([$invitadoId]);
                        $mensajeEmail = ' Se envió el email de invitación.';
                    } else {
                        $mensajeEmail = ' (Email no enviado: ' . $resultadoEmail['message'] . ')';
                    }
                } catch (Throwable $e) {
                    $mensajeEmail = ' (Error al enviar email: ' . $e->getMessage() . ')';
                }
            }
            
            $success = 'Invitado agregado correctamente. Token: ' . $token . $mensajeEmail;
            
            // Construir enlace de invitación para el modal (con ID y token para validación doble)
            $enlace_invitacion = generarEnlaceInvitacion($invitadoId, $token);
            
            // Limpiar formulario
            $_POST = [];
        } catch (Exception $e) {
            $pdo->rollBack();
            $error = 'Error al agregar invitado: ' . $e->getMessage();
        }
    }
}
?>
<style>
.page-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 24px;
}

.page-header h2 {
    margin: 0;
    font-size: 20px;
    font-weight: 600;
    color: var(--color-text-primary);
}

.form-container {
    background: var(--color-bg-secondary);
    padding: 30px;
    border-radius: var(--border-radius);
    box-shadow: var(--shadow-md);
    width: 100%;
    box-sizing: border-box;
}
.form-group {
    margin-bottom: 20px;
}
label {
    display: block;
    margin-bottom: 5px;
    color: var(--color-text-primary);
    font-weight: 500;
}
input, select, textarea {
    width: 100%;
    padding: 10px;
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius);
    font-size: 16px;
}
.btn {
    padding: 12px 30px;
    background: var(--color-primary);
    color: white;
    border: none;
    border-radius: var(--border-radius);
    cursor: pointer;
    font-size: 16px;
    margin-right: 10px;
    text-decoration: none;
    display: inline-block;
}
.btn:hover {
    background: var(--color-primary-hover);
}
.btn-secondary {
    background: var(--color-text-secondary);
}
.alert {
    padding: 15px;
    border-radius: var(--border-radius);
    margin-bottom: 20px;
}
.alert-error {
    background: #fff5f5;
    color: #c53030;
    border: 1px solid #fed7d7;
}
.alert-success {
    background: #f0fff4;
    color: #22543d;
    border: 1px solid #c6f6d5;
}
#admisiones-container {
    margin-top: 10px;
}
.admision-item {
    display: flex;
    gap: 10px;
    margin-bottom: 10px;
}
.admision-item input {
    flex: 1;
}
</style>

<!-- Modal de confirmación de invitado creado -->
<?php if ($success && isset($enlace_invitacion)): ?>
<style>
.modal-overlay-invitado {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0,0,0,0.5);
    display: none;
    align-items: center;
    justify-content: center;
    z-index: 10000;
}
.modal-invitado {
    background: var(--color-bg-secondary);
    border-radius: var(--border-radius);
    box-shadow: var(--shadow-lg);
    max-width: 520px;
    width: 90%;
    padding: 24px 24px 20px;
}
.modal-invitado-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 16px;
}
.modal-invitado-title {
    font-size: 18px;
    font-weight: 600;
    color: var(--color-text-primary);
}
.modal-invitado-body {
    color: var(--color-text-secondary);
    font-size: 14px;
    margin-bottom: 18px;
}
.modal-invitado-body p {
    margin: 0 0 8px;
}
.modal-invitado-body .resumen-item {
    margin-bottom: 4px;
}
.modal-invitado-body .resumen-item span {
    font-weight: 500;
    color: var(--color-text-primary);
}
.modal-invitado-footer {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
}
.btn-copy-link {
    background: var(--color-primary);
    color: #fff;
    border: none;
    border-radius: var(--border-radius);
    padding: 10px 18px;
    cursor: pointer;
    font-size: 14px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.btn-copy-link:hover {
    background: var(--color-primary-hover);
}
.btn-close-modal {
    background: var(--color-bg-primary);
    color: var(--color-text-primary);
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius);
    padding: 10px 16px;
    cursor: pointer;
    font-size: 14px;
}
.btn-close-modal:hover {
    background: var(--color-bg-secondary);
}
.modal-close-x {
    background: transparent;
    border: none;
    font-size: 20px;
    cursor: pointer;
    color: var(--color-text-secondary);
}
.modal-close-x:hover {
    color: var(--color-text-primary);
}
.enlace-invitacion-texto {
    font-family: monospace;
    font-size: 13px;
    word-break: break-all;
    background: var(--color-bg-primary);
    border-radius: 6px;
    padding: 6px 8px;
    border: 1px solid var(--color-border);
    margin-top: 4px;
}
</style>

<div class="modal-overlay-invitado" id="modal-invitado-creado">
    <div class="modal-invitado">
        <div class="modal-invitado-header">
            <div class="modal-invitado-title">Invitado creado con éxito</div>
            <button type="button" class="modal-close-x" onclick="cerrarModalInvitadoCreado()">&times;</button>
        </div>
        <div class="modal-invitado-body">
            <p>
                El invitado <strong><?php echo htmlspecialchars($nombre_invitado); ?></strong> se guardó con éxito.
            </p>
            <div class="resumen-item">
                <span>Invitación de:</span>
                <?php echo htmlspecialchars($invitacion_de ?: '-'); ?>
            </div>
            <div class="resumen-item">
                <span>Email:</span>
                <?php echo htmlspecialchars($email ?: '-'); ?>
            </div>
            <div class="resumen-item">
                <span>Teléfono:</span>
                <?php echo htmlspecialchars($telefono ?: '-'); ?>
            </div>
            <div class="resumen-item">
                <span>Número de admisiones:</span>
                <?php echo (int)$numero_admisiones; ?>
            </div>
            <div class="resumen-item" style="margin-top: 10px;">
                <span>Enlace de invitación:</span>
                <div class="enlace-invitacion-texto" id="texto-enlace-invitacion">
                    <?php echo htmlspecialchars($enlace_invitacion); ?>
                </div>
            </div>
        </div>
        <div class="modal-invitado-footer">
            <button type="button" class="btn-close-modal" onclick="cerrarModalInvitadoCreado()">Cerrar</button>
            <button type="button" class="btn-copy-link" onclick="copiarEnlaceInvitacion()">
                Copiar enlace
            </button>
        </div>
    </div>
</div>
<?php endif; ?>

<div class="page-header">
    <h2 class="card-title">Agregar nuevo invitado</h2>
</div>

<div class="form-container">
    <?php if ($error): ?>
        <div class="alert alert-error"><?php echo htmlspecialchars($error); ?></div>
    <?php endif; ?>
    
    <?php if ($success): ?>
        <div class="alert alert-success"><?php echo htmlspecialchars($success); ?></div>
    <?php endif; ?>
    
    <form method="POST" action="">
        <div class="form-group">
            <label for="nombre_cortesia">Nombre de Cortesía</label>
            <select id="nombre_cortesia" name="nombre_cortesia" required>
                <option value="Sr.">Sr.</option>
                <option value="Sra.">Sra.</option>
                <option value="Srta.">Srta.</option>
                <option value="Sres.">Sres.</option>
                <option value="Fam.">Fam.</option>
            </select>
        </div>
        
        <div class="form-group">
            <label for="nombre_invitado">Nombre del Invitado *</label>
            <input type="text" id="nombre_invitado" name="nombre_invitado" required 
                   value="<?php echo htmlspecialchars($_POST['nombre_invitado'] ?? ''); ?>">
        </div>
        
        <div class="form-group">
            <label for="email">Email</label>
            <input type="email" id="email" name="email" 
                   value="<?php echo htmlspecialchars($_POST['email'] ?? ''); ?>">
        </div>
        
        <div class="form-group">
            <label for="telefono">Teléfono</label>
            <input type="text" id="telefono" name="telefono" 
                   value="<?php echo htmlspecialchars($_POST['telefono'] ?? ''); ?>">
        </div>
        
        <div class="form-group">
            <label for="invitacion_de">Invitación de *</label>
            <?php 
            $opcionesInvitacion = obtenerOpcionesInvitacionDe($evento);
            $mostrarPersonalizado = false;
            ?>
            <select id="invitacion_de" name="invitacion_de" required onchange="togglePersonalizado()">
                <option value="">Seleccione...</option>
                <?php foreach ($opcionesInvitacion as $valor => $etiqueta): ?>
                    <?php 
                    if ($valor === 'Personalizado') {
                        $mostrarPersonalizado = true;
                    }
                    ?>
                    <option value="<?php echo htmlspecialchars($valor); ?>" 
                            <?php echo (isset($_POST['invitacion_de']) && $_POST['invitacion_de'] === $valor) ? 'selected' : ''; ?>>
                        <?php echo htmlspecialchars($etiqueta); ?>
                    </option>
                <?php endforeach; ?>
            </select>
            <?php if ($mostrarPersonalizado): ?>
                <div id="personalizado-container" style="display: none; margin-top: 10px;">
                    <input type="text" id="invitacion_de_personalizado" name="invitacion_de_personalizado" 
                           placeholder="Escriba el nombre personalizado"
                           value="<?php echo htmlspecialchars($_POST['invitacion_de_personalizado'] ?? ''); ?>">
                </div>
            <?php endif; ?>
        </div>
        
        <div class="form-group">
            <label for="numero_admisiones">Número de Admisiones</label>
            <input type="number" id="numero_admisiones" name="numero_admisiones" 
                   min="1" value="<?php echo $_POST['numero_admisiones'] ?? 1; ?>" 
                   onchange="actualizarAdmisiones()">
        </div>
        
        <div class="form-group" id="grupo-admisiones">
            <label>Nombres de Admisiones</label>
            <div id="admisiones-container"></div>
        </div>
        
        <div>
            <button type="submit" class="btn">Guardar Invitado</button>
            <a href="?page=invitados" class="btn btn-secondary">Cancelar</a>
        </div>
    </form>
</div>

<script>
    function actualizarAdmisiones() {
        const numero = parseInt(document.getElementById('numero_admisiones').value) || 1;
        const grupo = document.getElementById('grupo-admisiones');
        const container = document.getElementById('admisiones-container');
        
        if (!grupo || !container) return;
        
        container.innerHTML = '';
        
        // Si solo hay 1 admisión, es solo el invitado principal: ocultar nombres de admisiones
        if (numero <= 1) {
            grupo.style.display = 'none';
            return;
        }
        
        // Mostrar grupo de admisiones y crear campos solo para acompañantes (numero - 1)
        grupo.style.display = 'block';
        const numAcompanantes = numero - 1;
        
        for (let i = 0; i < numAcompanantes; i++) {
            const div = document.createElement('div');
            div.className = 'admision-item';
            div.innerHTML = `
                <input type="text" name="nombres_admisiones[]" 
                       placeholder="Nombre del acompañante ${i + 1}">
            `;
            container.appendChild(div);
        }
    }
    
    // Inicializar al cargar
    actualizarAdmisiones();
    
    function togglePersonalizado() {
        const select = document.getElementById('invitacion_de');
        const container = document.getElementById('personalizado-container');
        if (container) {
            if (select.value === 'Personalizado') {
                container.style.display = 'block';
                document.getElementById('invitacion_de_personalizado').required = true;
            } else {
                container.style.display = 'none';
                document.getElementById('invitacion_de_personalizado').required = false;
            }
        }
    }
    
    // Mostrar automáticamente el modal cuando existe (después de crear invitado)
    document.addEventListener('DOMContentLoaded', function() {
        var modal = document.getElementById('modal-invitado-creado');
        if (modal) {
            modal.style.display = 'flex';
        }
    });
    
    function cerrarModalInvitadoCreado() {
        var modal = document.getElementById('modal-invitado-creado');
        if (modal) {
            modal.style.display = 'none';
        }
    }
    
    function copiarEnlaceInvitacion() {
        var texto = document.getElementById('texto-enlace-invitacion');
        if (!texto) return;
        
        var enlace = texto.textContent.trim();
        if (!enlace) return;
        
        if (navigator.clipboard && navigator.clipboard.writeText) {
            navigator.clipboard.writeText(enlace).then(function() {
                alert('Enlace copiado al portapapeles');
            }).catch(function(err) {
                alert('No se pudo copiar el enlace: ' + err);
            });
        } else {
            // Fallback simple
            var tempInput = document.createElement('input');
            tempInput.value = enlace;
            document.body.appendChild(tempInput);
            tempInput.select();
            try {
                document.execCommand('copy');
                alert('Enlace copiado al portapapeles');
            } catch (e) {
                alert('No se pudo copiar el enlace');
            }
            document.body.removeChild(tempInput);
        }
    }
</script>

