<?php
include_once 'includes/header.php';
include_once 'config/database.php';

$database = new Database();
$conn = $database->getConnection();

// Configurar charset UTF-8 para la conexión
if ($conn) {
    $conn->exec("SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci");
    $conn->exec("SET CHARACTER SET utf8mb4");
}

// Delete logic
if (isset($_GET['delete'])) {
    $id = $_GET['delete'];
    try {
        // Verificar si la pregunta tiene encuestas asociadas
        $stmt = $conn->prepare("SELECT COUNT(*) as total FROM tdet_encu_pregu WHERE codpreguntas = ?");
        $stmt->execute([$id]);
        $result = $stmt->fetch(PDO::FETCH_ASSOC);
        
        if ($result['total'] > 0) {
            $_SESSION['error'] = "❌ No se puede eliminar la pregunta porque está asociada a una o más encuestas";
        } else {
            $stmt = $conn->prepare("DELETE FROM tpreguntas WHERE codpreguntas = ?");
            $stmt->execute([$id]);
            $_SESSION['success'] = "✅ Pregunta eliminada correctamente";
        }
    } catch(PDOException $e) {
        $_SESSION['error'] = "❌ Error al eliminar la pregunta: " . $e->getMessage();
    }
    header("Location: preguntas.php");
    exit();
}

// Insert/Update logic
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    
    // Asegurar que los datos se procesen con UTF-8
    $pregunta = trim($_POST['pregunta']);
    // Convertir a UTF-8 si no está ya en UTF-8
    if (!mb_check_encoding($pregunta, 'UTF-8')) {
        $pregunta = mb_convert_encoding($pregunta, 'UTF-8', 'auto');
    }
    $codtiporespuesta = !empty($_POST['codtiporespuesta']) ? intval($_POST['codtiporespuesta']) : null;
    
    if (isset($_POST['id'])) {
        // Update
        try {
            if (empty($pregunta)) {
                throw new Exception("La pregunta es obligatoria");
            }

            $stmt = $conn->prepare("UPDATE tpreguntas SET  pregunta = ?, codtiporespuesta = ? WHERE codpreguntas = ?");
            $stmt->execute([$pregunta, $codtiporespuesta, $_POST['id']]);
            $_SESSION['success'] = "✅ Pregunta actualizada correctamente";
        } catch(Exception $e) {
            $_SESSION['error'] = "❌ Error al actualizar la pregunta: " . $e->getMessage();
        }
    } else {
        // Insert
        try {
            if (empty($pregunta)) {
                throw new Exception("La pregunta es obligatoria");
            }

            $stmt = $conn->prepare("INSERT INTO tpreguntas (pregunta, codtiporespuesta) VALUES (?, ?)");
            $stmt->execute([$pregunta, $codtiporespuesta]);
            $_SESSION['success'] = "🎉 Pregunta creada correctamente";
        } catch(Exception $e) {
            $_SESSION['error'] = "❌ Error al crear la pregunta: " . $e->getMessage();
        }
    }
    header("Location: preguntas.php");
    exit();
}

// Edit logic - fetch single record
$editData = null;
if (isset($_GET['edit'])) {
    try {
        $stmt = $conn->prepare("SELECT * FROM tpreguntas WHERE codpreguntas = ?");
        $stmt->execute([$_GET['edit']]);
        $editData = $stmt->fetch(PDO::FETCH_ASSOC);
    } catch(PDOException $e) {
        $_SESSION['error'] = "❌ Error al obtener la pregunta: " . $e->getMessage();
    }
}

// Fetch all records with search
try {
    $search = isset($_GET['search']) ? trim($_GET['search']) : '';
    
    $query = "SELECT p.*, 
                     tr.tiporespuesta,
                     (SELECT COUNT(*) FROM tdet_encu_pregu WHERE codpreguntas = p.codpreguntas) as total_encuestas
              FROM tpreguntas p
              LEFT JOIN tiporespuesta tr ON p.codtiporespuesta = tr.codtiporespuesta
              WHERE 1=1";
    
    $params = [];
    if ($search) {
        $query .= " AND (p.pregunta LIKE ? OR tr.tiporespuesta LIKE ?)";
        $searchTerm = "%{$search}%";
        $params = [$searchTerm, $searchTerm];
    }
    
    $query .= " ORDER BY p.codpreguntas ASC";
    
    $stmt = $conn->prepare($query);
    $stmt->execute($params);
    $preguntas = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    // Obtener las alternativas para cada pregunta
    foreach ($preguntas as &$pregunta) {
        try {
            $stmt_alt = $conn->prepare("SELECT a.alternativa 
                                       FROM tdetpreg_alterna dpa
                                       INNER JOIN talternativas a ON dpa.codalternativas = a.codalternativas
                                       WHERE dpa.codpreguntas = ?
                                       ORDER BY a.alternativa");
            $stmt_alt->execute([$pregunta['codpreguntas']]);
            $pregunta['alternativas'] = $stmt_alt->fetchAll(PDO::FETCH_COLUMN);
        } catch(PDOException $e) {
            $pregunta['alternativas'] = [];
        }
    }
    unset($pregunta); // Liberar la referencia
} catch(PDOException $e) {
    $_SESSION['error'] = "❌ Error al obtener los datos: " . $e->getMessage();
    $preguntas = [];
}

// Fetch tipos de respuesta for select
try {
    $stmt_tipos = $conn->query("SELECT * FROM tiporespuesta ORDER BY tiporespuesta");
    $tipos_respuesta = $stmt_tipos->fetchAll(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    $tipos_respuesta = [];
}
?>

<style>
.pregunta-card {
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.pregunta-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 30px rgba(0,0,0,0.15);
}

.badge-encuestas {
    font-size: 0.85rem;
    padding: 5px 10px;
}
</style>

<div class="col-md-10 p-4">
    <div class="d-flex justify-content-between align-items-center mb-4">
        <h2>
            <i class="fas fa-question-circle"></i> Gestión de Preguntas
        </h2>
        <?php if (!isset($_GET['edit']) && !isset($_GET['create'])): ?>
            <a href="?create" class="btn btn-primary">
                <i class="fas fa-plus"></i> Nueva Pregunta
            </a>
        <?php endif; ?>
    </div>

    <?php if (isset($_SESSION['success'])): ?>
        <div class="alert alert-success alert-custom">
            <i class="fas fa-check-circle"></i>
            <?php 
            echo $_SESSION['success']; 
            unset($_SESSION['success']);
            ?>
        </div>
    <?php endif; ?>

    <?php if (isset($_SESSION['warning'])): ?>
        <div class="alert alert-warning alert-custom">
            <i class="fas fa-exclamation-triangle"></i>
            <?php 
            echo $_SESSION['warning']; 
            unset($_SESSION['warning']);
            ?>
        </div>
    <?php endif; ?>

    <?php if (isset($_SESSION['error'])): ?>
        <div class="alert alert-danger alert-custom">
            <i class="fas fa-exclamation-triangle"></i>
            <?php 
            echo $_SESSION['error']; 
            unset($_SESSION['error']);
            ?>
        </div>
    <?php endif; ?>

    <?php if (isset($_GET['create']) || isset($_GET['edit'])): ?>
        <!-- Form for create/edit -->
        <div class="card mb-4">
            <div class="card-body">
                <h5 class="card-title">
                    <i class="fas fa-<?php echo isset($_GET['edit']) ? 'edit' : 'plus'; ?>"></i>
                    <?php echo isset($_GET['edit']) ? 'Editar' : 'Crear'; ?> Pregunta
                </h5>
                <form method="POST" action="preguntas.php" accept-charset="UTF-8">
                    <?php if (isset($_GET['edit'])): ?>
                        <input type="hidden" name="id" value="<?php echo $editData['codpreguntas']; ?>">
                    <?php endif; ?>
                    
                    <div class="row">
                        
                        
                        <div class="col-md-9 mb-3">
                            <label class="form-label">
                                <i class="fas fa-question-circle"></i> Tipo de Respuesta
                            </label>
                            <select class="form-select" name="codtiporespuesta">
                                <option value="">Seleccionar tipo de respuesta...</option>
                                <?php foreach ($tipos_respuesta as $tipo): ?>
                                    <option value="<?php echo $tipo['codtiporespuesta']; ?>"
                                        <?php echo ($editData && $editData['codtiporespuesta'] == $tipo['codtiporespuesta']) ? 'selected' : ''; ?>>
                                        <?php echo htmlspecialchars($tipo['tiporespuesta']); ?>
                                    </option>
                                <?php endforeach; ?>
                            </select>
                        </div>
                    </div>
                    
                    <div class="mb-3">
                        <label class="form-label">
                            <i class="fas fa-question"></i> Pregunta *
                        </label>
                        <textarea class="form-control" name="pregunta" rows="3" maxlength="200"
                                  placeholder="Ingrese la pregunta"
                                  required><?php echo $editData ? htmlspecialchars($editData['pregunta']) : ''; ?></textarea>
                        <div class="form-text">Máximo 200 caracteres</div>
                    </div>

                    <div class="d-flex gap-2">
                        <button type="submit" class="btn btn-primary">
                            <i class="fas fa-save"></i> Guardar
                        </button>
                        <a href="preguntas.php" class="btn btn-secondary">
                            <i class="fas fa-times"></i> Cancelar
                        </a>
                    </div>
                </form>
            </div>
        </div>
    <?php else: ?>
        <!-- Search form -->
        <div class="card mb-4">
            <div class="card-body">
                <form method="GET" action="preguntas.php" class="row g-3">
                    <div class="col-md-8">
                        <input type="text" class="form-control" name="search" 
                               placeholder="Buscar por pregunta o tipo de respuesta..."
                               value="<?php echo isset($_GET['search']) ? htmlspecialchars($_GET['search']) : ''; ?>">
                    </div>
                    <div class="col-md-4">
                        <button type="submit" class="btn btn-primary">
                            <i class="fas fa-search"></i> Buscar
                        </button>
                        <?php if (isset($_GET['search'])): ?>
                            <a href="preguntas.php" class="btn btn-secondary">
                                <i class="fas fa-times"></i> Limpiar
                            </a>
                        <?php endif; ?>
                    </div>
                </form>
            </div>
        </div>

        <!-- List of records -->
        <div class="card">
            <div class="card-body">
                <?php if (empty($preguntas)): ?>
                    <div class="text-center py-5">
                        <i class="fas fa-question-circle fa-4x text-muted mb-3"></i>
                        <p class="text-muted">No hay preguntas registradas</p>
                        <a href="?create" class="btn btn-primary">
                            <i class="fas fa-plus"></i> Crear Primera Pregunta
                        </a>
                    </div>
                <?php else: ?>
                    <div class="table-responsive">
                        <table class="table table-striped">
                            <thead>
                                <tr>
                                    <th><i class="fas fa-hashtag"></i> ID</th>
                                    
                                    <th><i class="fas fa-question"></i> Pregunta</th>
                                    <th><i class="fas fa-list"></i> Tipo Respuesta</th>
                                    <th><i class="fas fa-clipboard-list"></i> Encuestas</th>
                                    <th><i class="fas fa-cogs"></i> Acciones</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php foreach ($preguntas as $pregunta): ?>
                                    <tr>
                                        <td>
                                            <span class="badge bg-primary rounded-pill"><?php echo $pregunta['codpreguntas']; ?></span>
                                        </td>
                                        
                                        <td>
                                            <strong><?php echo htmlspecialchars($pregunta['pregunta']); ?></strong>
                                            <?php if (!empty($pregunta['alternativas'])): ?>
                                                <div class="mt-2">
                                                    
                                                    <ul class="list-unstyled mb-0 ms-3">
                                                        <?php foreach ($pregunta['alternativas'] as $alternativa): ?>
                                                            <li class="text-muted">
                                                                <i class="fas fa-circle" style="font-size: 0.4rem; vertical-align: middle;"></i>
                                                                <?php echo htmlspecialchars($alternativa); ?>
                                                            </li>
                                                        <?php endforeach; ?>
                                                    </ul>
                                                </div>
                                            <?php else: ?>
                                                <div class="mt-2">
                                                    <small class="text-muted">
                                                        <i class="fas fa-info-circle"></i> No tiene alternativas
                                                    </small>
                                                </div>
                                            <?php endif; ?>
                                        </td>
                                        <td>
                                            <?php if ($pregunta['tiporespuesta']): ?>
                                                <span class="badge bg-success">
                                                    <?php echo htmlspecialchars($pregunta['tiporespuesta']); ?>
                                                </span>
                                                <br>
                                                <button type="button" class="btn btn-sm btn-info mt-1" 
                                                        onclick="abrirModalAlternativas(<?php echo $pregunta['codpreguntas']; ?>, '<?php echo htmlspecialchars($pregunta['pregunta']); ?>')"
                                                        title="Gestionar Alternativas">
                                                    <i class="fas fa-list-check"></i> Alternativas
                                                </button>
                                            <?php else: ?>
                                                <span class="text-muted">-</span>
                                            <?php endif; ?>
                                        </td>
                                        <td>
                                            <?php if ($pregunta['total_encuestas'] > 0): ?>
                                                <span class="badge bg-info badge-encuestas">
                                                    <i class="fas fa-clipboard-list"></i>
                                                    <?php echo $pregunta['total_encuestas']; ?> encuesta(s)
                                                </span>
                                            <?php else: ?>
                                                <span class="badge bg-secondary badge-encuestas">
                                                    <i class="fas fa-exclamation-circle"></i>
                                                    Sin encuestas
                                                </span>
                                            <?php endif; ?>
                                        </td>
                                        <td>
                                            <div class="btn-group" role="group">
                                                <a href="?edit=<?php echo $pregunta['codpreguntas']; ?>" 
                                                   class="btn btn-sm btn-warning" 
                                                   title="Editar">
                                                    <i class="fas fa-edit"></i>
                                                </a>
                                                <a href="?delete=<?php echo $pregunta['codpreguntas']; ?>" 
                                                   class="btn btn-sm btn-danger"
                                                   onclick="return confirm('¿Está seguro de eliminar la pregunta \'<?php echo htmlspecialchars($pregunta['pregunta']); ?>\'?')"
                                                   title="Eliminar">
                                                    <i class="fas fa-trash"></i>
                                                </a>
                                            </div>
                                        </td>
                                    </tr>
                                <?php endforeach; ?>
                            </tbody>
                        </table>
                    </div>
                <?php endif; ?>
            </div>
        </div>
    <?php endif; ?>
</div>

<!-- Modal para Gestionar Alternativas -->
<div class="modal fade" id="modalAlternativas" tabindex="-1" aria-labelledby="modalAlternativasLabel" aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="modalAlternativasLabel">
                    <i class="fas fa-list-check"></i> Gestionar Alternativas
                </h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
            </div>
            <div class="modal-body">
                <div class="mb-3">
                    <strong>Pregunta:</strong> <span id="preguntaNombre"></span>
                </div>
                <div id="loadingAlternativas" class="text-center py-4">
                    <i class="fas fa-spinner fa-spin fa-2x"></i>
                    <p>Cargando alternativas...</p>
                </div>
                <div id="contenidoAlternativas" style="display: none;">
                    <form id="formAlternativas">
                        <input type="hidden" id="codpreguntas_alternativas" name="codpreguntas">
                        <div class="list-group" id="listaAlternativas">
                            <!-- Las alternativas se cargarán aquí -->
                        </div>
                    </form>
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">
                    <i class="fas fa-times"></i> Cancelar
                </button>
                <button type="button" class="btn btn-primary" onclick="guardarAlternativas()" id="btnGuardarAlternativas">
                    <i class="fas fa-save"></i> Guardar Alternativas
                </button>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Form validation
    const form = document.querySelector('form[method="POST"]');
    if (form) {
        form.addEventListener('submit', function(e) {
            const pregunta = form.querySelector('textarea[name="pregunta"]').value.trim();
            if (!pregunta) {
                e.preventDefault();
                alert('La pregunta es obligatoria');
                return false;
            }
            
            if (pregunta.length > 200) {
                e.preventDefault();
                alert('La pregunta no puede exceder 200 caracteres');
                return false;
            }
        });
    }
    
    // Auto-resize textarea
    const textarea = document.querySelector('textarea[name="pregunta"]');
    if (textarea) {
        textarea.addEventListener('input', function() {
            this.style.height = 'auto';
            this.style.height = this.scrollHeight + 'px';
        });
    }
});

// Función para abrir el modal de alternativas
function abrirModalAlternativas(codpreguntas, preguntaNombre) {
    const modal = new bootstrap.Modal(document.getElementById('modalAlternativas'));
    document.getElementById('preguntaNombre').textContent = preguntaNombre;
    document.getElementById('codpreguntas_alternativas').value = codpreguntas;
    
    // Mostrar loading y ocultar contenido
    document.getElementById('loadingAlternativas').style.display = 'block';
    document.getElementById('contenidoAlternativas').style.display = 'none';
    document.getElementById('btnGuardarAlternativas').disabled = true;
    
    // Limpiar lista
    document.getElementById('listaAlternativas').innerHTML = '';
    
    // Mostrar modal
    modal.show();
    
    // Cargar alternativas via AJAX
    fetch(`ajax/get_alternativas_pregunta.php?codpreguntas=${codpreguntas}`)
        .then(response => response.json())
        .then(data => {
            document.getElementById('loadingAlternativas').style.display = 'none';
            document.getElementById('contenidoAlternativas').style.display = 'block';
            document.getElementById('btnGuardarAlternativas').disabled = false;
            
            if (data.success) {
                const listaAlternativas = document.getElementById('listaAlternativas');
                listaAlternativas.innerHTML = '';
                
                if (data.alternativas && data.alternativas.length > 0) {
                    data.alternativas.forEach(alternativa => {
                        const isChecked = data.alternativas_seleccionadas.includes(parseInt(alternativa.codalternativas));
                        const listItem = document.createElement('div');
                        listItem.className = 'list-group-item';
                        listItem.innerHTML = `
                            <div class="form-check">
                                <input class="form-check-input" type="checkbox" 
                                       name="alternativas[]" 
                                       value="${alternativa.codalternativas}" 
                                       id="alt_${alternativa.codalternativas}"
                                       ${isChecked ? 'checked' : ''}>
                                <label class="form-check-label" for="alt_${alternativa.codalternativas}">
                                    ${alternativa.alternativa}
                                </label>
                            </div>
                        `;
                        listaAlternativas.appendChild(listItem);
                    });
                } else {
                    listaAlternativas.innerHTML = '<div class="alert alert-info">No hay alternativas disponibles</div>';
                }
            } else {
                document.getElementById('listaAlternativas').innerHTML = 
                    `<div class="alert alert-danger">Error: ${data.message || 'Error al cargar las alternativas'}</div>`;
            }
        })
        .catch(error => {
            console.error('Error:', error);
            document.getElementById('loadingAlternativas').style.display = 'none';
            document.getElementById('contenidoAlternativas').style.display = 'block';
            document.getElementById('listaAlternativas').innerHTML = 
                '<div class="alert alert-danger">Error al cargar las alternativas</div>';
        });
}

// Función para guardar las alternativas seleccionadas
function guardarAlternativas() {
    const codpreguntas = document.getElementById('codpreguntas_alternativas').value;
    const checkboxes = document.querySelectorAll('input[name="alternativas[]"]:checked');
    const alternativasSeleccionadas = Array.from(checkboxes).map(cb => cb.value);
    
    // Mostrar loading en el botón
    const btn = document.getElementById('btnGuardarAlternativas');
    const originalText = btn.innerHTML;
    btn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Guardando...';
    btn.disabled = true;
    
    fetch('ajax/guardar_alternativas_pregunta.php', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
        },
        body: `codpreguntas=${encodeURIComponent(codpreguntas)}&alternativas=${encodeURIComponent(JSON.stringify(alternativasSeleccionadas))}`
    })
    .then(response => response.json())
    .then(data => {
        if (data.success) {
            alert('Alternativas guardadas correctamente');
            // Cerrar el modal
            const modal = bootstrap.Modal.getInstance(document.getElementById('modalAlternativas'));
            modal.hide();
            // Recargar la página para mostrar los cambios
            location.reload();
        } else {
            alert('Error al guardar las alternativas: ' + (data.message || 'Error desconocido'));
            btn.innerHTML = originalText;
            btn.disabled = false;
        }
    })
    .catch(error => {
        console.error('Error:', error);
        alert('Error al guardar las alternativas');
        btn.innerHTML = originalText;
        btn.disabled = false;
    });
}
</script>

<?php
include_once 'includes/footer.php';
?>

