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

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

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

// Insert/Update logic
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $encuesta = trim($_POST['encuesta']);
    
    if (isset($_POST['id'])) {
        // Update
        try {
            if (empty($encuesta)) {
                throw new Exception("El nombre de la encuesta es obligatorio");
            }

            $stmt = $conn->prepare("UPDATE tencuesta SET encuesta = ? WHERE codencuesta = ?");
            $stmt->execute([$encuesta, $_POST['id']]);
            $_SESSION['success'] = "✅ Encuesta actualizada correctamente";
        } catch(Exception $e) {
            $_SESSION['error'] = "❌ Error al actualizar la encuesta: " . $e->getMessage();
        }
    } else {
        // Insert
        try {
            if (empty($encuesta)) {
                throw new Exception("El nombre de la encuesta es obligatorio");
            }

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

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

// Fetch all records with search
try {
    $search = isset($_GET['search']) ? trim($_GET['search']) : '';
    
    $query = "SELECT e.*, 
                     (SELECT COUNT(*) FROM tdet_encu_pregu WHERE codencuesta = e.codencuesta) as total_preguntas
              FROM tencuesta e
              WHERE 1=1";
    
    $params = [];
    if ($search) {
        $query .= " AND e.encuesta LIKE ?";
        $searchTerm = "%{$search}%";
        $params[] = $searchTerm;
    }
    
    $query .= " ORDER BY e.encuesta";
    
    $stmt = $conn->prepare($query);
    $stmt->execute($params);
    $encuestas = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    // Obtener las preguntas para cada encuesta
    foreach ($encuestas as &$encuesta) {
        try {
            $stmt_preg = $conn->prepare("SELECT p.codpreguntas, p.pregunta, dep.orden, dep.codencupregu
                                        FROM tdet_encu_pregu dep
                                        INNER JOIN tpreguntas p ON dep.codpreguntas = p.codpreguntas
                                        WHERE dep.codencuesta = ?
                                        ORDER BY COALESCE(dep.orden, 999999), p.pregunta");
            $stmt_preg->execute([$encuesta['codencuesta']]);
            $encuesta['preguntas'] = $stmt_preg->fetchAll(PDO::FETCH_ASSOC);
        } catch(PDOException $e) {
            $encuesta['preguntas'] = [];
        }
    }
    unset($encuesta); // Liberar la referencia
} catch(PDOException $e) {
    $_SESSION['error'] = "❌ Error al obtener los datos: " . $e->getMessage();
    $encuestas = [];
}
?>

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

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

.badge-preguntas {
    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-clipboard-list"></i> Gestión de Encuestas
        </h2>
        <?php if (!isset($_GET['edit']) && !isset($_GET['create'])): ?>
            <a href="?create" class="btn btn-primary">
                <i class="fas fa-plus"></i> Nueva Encuesta
            </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'; ?> Encuesta
                </h5>
                <form method="POST" action="encuesta.php">
                    <?php if (isset($_GET['edit'])): ?>
                        <input type="hidden" name="id" value="<?php echo $editData['codencuesta']; ?>">
                    <?php endif; ?>
                    
                    <div class="mb-3">
                        <label class="form-label">
                            <i class="fas fa-clipboard-list"></i> Nombre de la Encuesta *
                        </label>
                        <input type="text" class="form-control" name="encuesta" maxlength="200"
                               placeholder="Ingrese el nombre de la encuesta"
                               value="<?php echo $editData ? htmlspecialchars($editData['encuesta']) : ''; ?>" required>
                        <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="encuesta.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="encuesta.php" class="row g-3">
                    <div class="col-md-8">
                        <input type="text" class="form-control" name="search" 
                               placeholder="Buscar por nombre de encuesta..."
                               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="encuesta.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($encuestas)): ?>
                    <div class="text-center py-5">
                        <i class="fas fa-clipboard-list fa-4x text-muted mb-3"></i>
                        <p class="text-muted">No hay encuestas registradas</p>
                        <a href="?create" class="btn btn-primary">
                            <i class="fas fa-plus"></i> Crear Primera Encuesta
                        </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-clipboard-list"></i> Encuesta</th>
                                    <th><i class="fas fa-question-circle"></i> Preguntas</th>
                                    <th><i class="fas fa-cogs"></i> Acciones</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php foreach ($encuestas as $encuesta): ?>
                                    <tr>
                                        <td>
                                            <span class="badge bg-primary rounded-pill"><?php echo $encuesta['codencuesta']; ?></span>
                                        </td>
                                        <td>
                                            <strong><?php echo htmlspecialchars($encuesta['encuesta']); ?></strong>
                                            <?php if (!empty($encuesta['preguntas'])): ?>
                                                <div class="mt-2">
                                                    <form class="form-orden-preguntas" data-codencuesta="<?php echo $encuesta['codencuesta']; ?>">
                                                        <ul class="list-unstyled mb-2 ms-3">
                                                            <?php foreach ($encuesta['preguntas'] as $pregunta): ?>
                                                                <li class="text-muted mb-2 d-flex align-items-center">
                                                                    <div class="input-group input-group-sm me-2" style="width: 120px;">
                                                                        <span class="input-group-text">Orden</span>
                                                                        <input type="number" 
                                                                               class="form-control orden-input" 
                                                                               name="orden[<?php echo $pregunta['codpreguntas']; ?>]"
                                                                               data-codpreguntas="<?php echo $pregunta['codpreguntas']; ?>"
                                                                               value="<?php echo $pregunta['orden'] !== null ? htmlspecialchars($pregunta['orden']) : ''; ?>"
                                                                               placeholder="Número"
                                                                               min="1">
                                                                    </div>
                                                                    <i class="fas fa-circle me-2" style="font-size: 0.4rem; vertical-align: middle;"></i>
                                                                    <span class="flex-grow-1"><?php echo htmlspecialchars($pregunta['pregunta']); ?></span>
                                                                </li>
                                                            <?php endforeach; ?>
                                                        </ul>
                                                        <div class="text-end ms-3">
                                                            <button type="button" 
                                                                    class="btn btn-sm btn-success" 
                                                                    onclick="guardarOrdenPreguntasVista(<?php echo $encuesta['codencuesta']; ?>)"
                                                                    title="Guardar Orden">
                                                                <i class="fas fa-sort-numeric-down"></i> Guardar Orden
                                                            </button>
                                                        </div>
                                                    </form>
                                                </div>
                                            <?php else: ?>
                                                <div class="mt-2">
                                                    <small class="text-muted">
                                                        <i class="fas fa-info-circle"></i> No tiene preguntas
                                                    </small>
                                                </div>
                                            <?php endif; ?>
                                        </td>
                                        <td>
                                            <?php if ($encuesta['total_preguntas'] > 0): ?>
                                                <span class="badge bg-info badge-preguntas">
                                                    <i class="fas fa-question-circle"></i>
                                                    <?php echo $encuesta['total_preguntas']; ?> pregunta(s)
                                                </span>
                                                <br>
                                                <button type="button" class="btn btn-sm btn-info mt-1" 
                                                        onclick="abrirModalPreguntas(<?php echo $encuesta['codencuesta']; ?>, '<?php echo htmlspecialchars($encuesta['encuesta']); ?>')"
                                                        title="Gestionar Preguntas">
                                                    <i class="fas fa-list-check"></i> Preguntas
                                                </button>
                                            <?php else: ?>
                                                <span class="badge bg-secondary badge-preguntas">
                                                    <i class="fas fa-exclamation-circle"></i>
                                                    Sin preguntas
                                                </span>
                                                <br>
                                                <button type="button" class="btn btn-sm btn-info mt-1" 
                                                        onclick="abrirModalPreguntas(<?php echo $encuesta['codencuesta']; ?>, '<?php echo htmlspecialchars($encuesta['encuesta']); ?>')"
                                                        title="Gestionar Preguntas">
                                                    <i class="fas fa-list-check"></i> Preguntas
                                                </button>
                                            <?php endif; ?>
                                        </td>
                                        <td>
                                            <div class="btn-group" role="group">
                                                <a href="?edit=<?php echo $encuesta['codencuesta']; ?>" 
                                                   class="btn btn-sm btn-warning" 
                                                   title="Editar">
                                                    <i class="fas fa-edit"></i>
                                                </a>
                                                <a href="?delete=<?php echo $encuesta['codencuesta']; ?>" 
                                                   class="btn btn-sm btn-danger"
                                                   onclick="return confirm('¿Está seguro de eliminar la encuesta \'<?php echo htmlspecialchars($encuesta['encuesta']); ?>\'?')"
                                                   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 Preguntas -->
<div class="modal fade" id="modalPreguntas" tabindex="-1" aria-labelledby="modalPreguntasLabel" aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="modalPreguntasLabel">
                    <i class="fas fa-list-check"></i> Gestionar Preguntas
                </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>Encuesta:</strong> <span id="encuestaNombre"></span>
                </div>
                <div id="loadingPreguntas" class="text-center py-4">
                    <i class="fas fa-spinner fa-spin fa-2x"></i>
                    <p>Cargando preguntas...</p>
                </div>
                <div id="contenidoPreguntas" style="display: none;">
                    <form id="formPreguntas">
                        <input type="hidden" id="codencuesta_preguntas" name="codencuesta">
                        <div class="list-group" id="listaPreguntas">
                            <!-- Las preguntas 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="guardarPreguntas()" id="btnGuardarPreguntas">
                    <i class="fas fa-save"></i> Guardar Preguntas
                </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 encuesta = form.querySelector('input[name="encuesta"]').value.trim();
            if (!encuesta) {
                e.preventDefault();
                alert('El nombre de la encuesta es obligatorio');
                return false;
            }
            
            if (encuesta.length > 200) {
                e.preventDefault();
                alert('El nombre de la encuesta no puede exceder 200 caracteres');
                return false;
            }
        });
    }
});

// Función para abrir el modal de preguntas
function abrirModalPreguntas(codencuesta, encuestaNombre) {
    const modal = new bootstrap.Modal(document.getElementById('modalPreguntas'));
    document.getElementById('encuestaNombre').textContent = encuestaNombre;
    document.getElementById('codencuesta_preguntas').value = codencuesta;
    
    // Mostrar loading y ocultar contenido
    document.getElementById('loadingPreguntas').style.display = 'block';
    document.getElementById('contenidoPreguntas').style.display = 'none';
    document.getElementById('btnGuardarPreguntas').disabled = true;
    
    // Limpiar lista
    document.getElementById('listaPreguntas').innerHTML = '';
    
    // Mostrar modal
    modal.show();
    
    // Cargar preguntas via AJAX
    fetch(`ajax/get_preguntas_encuesta.php?codencuesta=${codencuesta}`)
        .then(response => response.json())
        .then(data => {
            document.getElementById('loadingPreguntas').style.display = 'none';
            document.getElementById('contenidoPreguntas').style.display = 'block';
            document.getElementById('btnGuardarPreguntas').disabled = false;
            
            if (data.success) {
                const listaPreguntas = document.getElementById('listaPreguntas');
                listaPreguntas.innerHTML = '';
                
                if (data.preguntas && data.preguntas.length > 0) {
                    data.preguntas.forEach(pregunta => {
                        const isChecked = data.preguntas_seleccionadas.some(ps => ps.codpreguntas === parseInt(pregunta.codpreguntas));
                        const listItem = document.createElement('div');
                        listItem.className = 'list-group-item';
                        listItem.innerHTML = `
                            <div class="form-check">
                                <input class="form-check-input" type="checkbox" 
                                       name="preguntas[]" 
                                       value="${pregunta.codpreguntas}" 
                                       id="preg_${pregunta.codpreguntas}"
                                       ${isChecked ? 'checked' : ''}>
                                <label class="form-check-label" for="preg_${pregunta.codpreguntas}">
                                    ${pregunta.pregunta}
                                </label>
                            </div>
                        `;
                        listaPreguntas.appendChild(listItem);
                    });
                } else {
                    listaPreguntas.innerHTML = '<div class="alert alert-info">No hay preguntas disponibles</div>';
                }
            } else {
                document.getElementById('listaPreguntas').innerHTML = 
                    `<div class="alert alert-danger">Error: ${data.message || 'Error al cargar las preguntas'}</div>`;
            }
        })
        .catch(error => {
            console.error('Error:', error);
            document.getElementById('loadingPreguntas').style.display = 'none';
            document.getElementById('contenidoPreguntas').style.display = 'block';
            document.getElementById('listaPreguntas').innerHTML = 
                '<div class="alert alert-danger">Error al cargar las preguntas</div>';
        });
}

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

// Función para guardar el orden de las preguntas desde la vista principal
function guardarOrdenPreguntasVista(codencuesta) {
    const form = document.querySelector(`form[data-codencuesta="${codencuesta}"]`);
    if (!form) {
        alert('No se encontró el formulario de orden');
        return;
    }
    
    const ordenInputs = form.querySelectorAll('.orden-input');
    const ordenes = [];
    
    ordenInputs.forEach(input => {
        const codpreguntas = input.getAttribute('data-codpreguntas');
        const orden = input.value.trim();
        if (codpreguntas && orden) {
            ordenes.push({
                codpreguntas: parseInt(codpreguntas),
                orden: parseInt(orden)
            });
        }
    });
    
    if (ordenes.length === 0) {
        alert('Por favor, ingrese al menos un orden para una pregunta');
        return;
    }
    
    // Mostrar loading
    const btn = event.target;
    const originalText = btn.innerHTML;
    btn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Guardando...';
    btn.disabled = true;
    
    fetch('ajax/guardar_orden_preguntas.php', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
        },
        body: `codencuesta=${encodeURIComponent(codencuesta)}&ordenes=${encodeURIComponent(JSON.stringify(ordenes))}`
    })
    .then(response => response.json())
    .then(data => {
        if (data.success) {
            alert('Orden guardado correctamente');
            // Recargar la página para mostrar el nuevo orden
            location.reload();
        } else {
            alert('Error al guardar el orden: ' + (data.message || 'Error desconocido'));
            btn.innerHTML = originalText;
            btn.disabled = false;
        }
    })
    .catch(error => {
        console.error('Error:', error);
        alert('Error al guardar el orden');
        btn.innerHTML = originalText;
        btn.disabled = false;
    });
}
</script>

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

