<?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 {
        $stmt = $conn->prepare("DELETE FROM tdet_encu_pregu WHERE codencupregu = ?");
        $stmt->execute([$id]);
        $_SESSION['success'] = "✅ Relación eliminada correctamente";
    } catch(PDOException $e) {
        $_SESSION['error'] = "❌ Error al eliminar la relación: " . $e->getMessage();
    }
    header("Location: detalle_encu_pregunta.php");
    exit();
}

// Insert/Update logic
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $codencuesta = !empty($_POST['codencuesta']) ? intval($_POST['codencuesta']) : null;
    $codpreguntas = !empty($_POST['codpreguntas']) ? intval($_POST['codpreguntas']) : null;
    
    if (isset($_POST['id'])) {
        // Update
        try {
            if (empty($codencuesta) || empty($codpreguntas)) {
                throw new Exception("La encuesta y la pregunta son obligatorias");
            }

            // Verificar que no exista ya esta relación (excepto el registro actual)
            $stmt = $conn->prepare("SELECT COUNT(*) as total FROM tdet_encu_pregu 
                                    WHERE codencuesta = ? AND codpreguntas = ? AND codencupregu != ?");
            $stmt->execute([$codencuesta, $codpreguntas, $_POST['id']]);
            $existe = $stmt->fetch(PDO::FETCH_ASSOC);
            
            if ($existe['total'] > 0) {
                throw new Exception("Esta relación ya existe");
            }

            $stmt = $conn->prepare("UPDATE tdet_encu_pregu SET codencuesta = ?, codpreguntas = ? WHERE codencupregu = ?");
            $stmt->execute([$codencuesta, $codpreguntas, $_POST['id']]);
            $_SESSION['success'] = "✅ Relación actualizada correctamente";
        } catch(Exception $e) {
            $_SESSION['error'] = "❌ Error al actualizar la relación: " . $e->getMessage();
        }
    } else {
        // Insert
        try {
            if (empty($codencuesta) || empty($codpreguntas)) {
                throw new Exception("La encuesta y la pregunta son obligatorias");
            }

            // Verificar que no exista ya esta relación
            $stmt = $conn->prepare("SELECT COUNT(*) as total FROM tdet_encu_pregu 
                                    WHERE codencuesta = ? AND codpreguntas = ?");
            $stmt->execute([$codencuesta, $codpreguntas]);
            $existe = $stmt->fetch(PDO::FETCH_ASSOC);
            
            if ($existe['total'] > 0) {
                throw new Exception("Esta relación ya existe");
            }

            $stmt = $conn->prepare("INSERT INTO tdet_encu_pregu (codencuesta, codpreguntas) VALUES (?, ?)");
            $stmt->execute([$codencuesta, $codpreguntas]);
            $_SESSION['success'] = "🎉 Relación creada correctamente";
        } catch(Exception $e) {
            $_SESSION['error'] = "❌ Error al crear la relación: " . $e->getMessage();
        }
    }
    header("Location: detalle_encu_pregunta.php");
    exit();
}

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

// Fetch all records with search
try {
    $search = isset($_GET['search']) ? trim($_GET['search']) : '';
    $filter_encuesta = isset($_GET['filter_encuesta']) ? intval($_GET['filter_encuesta']) : 0;
    
    $query = "SELECT dep.*, 
                     e.encuesta,
                     p.pregunta,
                     tr.tiporespuesta
              FROM tdet_encu_pregu dep
              LEFT JOIN tencuesta e ON dep.codencuesta = e.codencuesta
              LEFT JOIN tpreguntas p ON dep.codpreguntas = p.codpreguntas
              LEFT JOIN tiporespuesta tr ON p.codtiporespuesta = tr.codtiporespuesta
              WHERE 1=1";
    
    $params = [];
    if ($search) {
        $query .= " AND (e.encuesta LIKE ? OR p.pregunta LIKE ? OR tr.tiporespuesta LIKE ?)";
        $searchTerm = "%{$search}%";
        $params = array_merge($params, [$searchTerm, $searchTerm, $searchTerm]);
    }
    
    if ($filter_encuesta > 0) {
        $query .= " AND dep.codencuesta = ?";
        $params[] = $filter_encuesta;
    }
    
    $query .= " ORDER BY e.encuesta ASC, p.codpreguntas ASC";
    
    $stmt = $conn->prepare($query);
    $stmt->execute($params);
    $detalles = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    $_SESSION['error'] = "❌ Error al obtener los datos: " . $e->getMessage();
    $detalles = [];
}

// Fetch encuestas for select
try {
    $stmt_encuestas = $conn->query("SELECT * FROM tencuesta ORDER BY encuesta");
    $encuestas = $stmt_encuestas->fetchAll(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    $encuestas = [];
}

// Fetch preguntas for select
try {
    $stmt_preguntas = $conn->query("SELECT p.*, tr.tiporespuesta 
                                    FROM tpreguntas p 
                                    LEFT JOIN tiporespuesta tr ON p.codtiporespuesta = tr.codtiporespuesta
                                    ORDER BY p.pregunta");
    $preguntas = $stmt_preguntas->fetchAll(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    $preguntas = [];
}
?>

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

.detalle-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 30px rgba(0,0,0,0.15);
}
</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-link"></i> Gestión de Detalle Encuesta-Pregunta
        </h2>
        <?php if (!isset($_GET['edit']) && !isset($_GET['create'])): ?>
            <a href="?create" class="btn btn-primary">
                <i class="fas fa-plus"></i> Nueva Relación
            </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'; ?> Relación Encuesta-Pregunta
                </h5>
                <form method="POST" action="detalle_encu_pregunta.php">
                    <?php if (isset($_GET['edit'])): ?>
                        <input type="hidden" name="id" value="<?php echo $editData['codencupregu']; ?>">
                    <?php endif; ?>
                    
                    <div class="row">
                        <div class="col-md-6 mb-3">
                            <label class="form-label">
                                <i class="fas fa-clipboard-list"></i> Encuesta *
                            </label>
                            <select class="form-select" name="codencuesta" required>
                                <option value="">Seleccionar encuesta...</option>
                                <?php foreach ($encuestas as $encuesta): ?>
                                    <option value="<?php echo $encuesta['codencuesta']; ?>"
                                        <?php echo ($editData && $editData['codencuesta'] == $encuesta['codencuesta']) ? 'selected' : ''; ?>>
                                        <?php echo htmlspecialchars($encuesta['encuesta']); ?>
                                    </option>
                                <?php endforeach; ?>
                            </select>
                        </div>
                        
                        <div class="col-md-6 mb-3">
                            <label class="form-label">
                                <i class="fas fa-question-circle"></i> Pregunta *
                            </label>
                            <select class="form-select" name="codpreguntas" required>
                                <option value="">Seleccionar pregunta...</option>
                                <?php foreach ($preguntas as $pregunta): ?>
                                    <option value="<?php echo $pregunta['codpreguntas']; ?>"
                                        <?php echo ($editData && $editData['codpreguntas'] == $pregunta['codpreguntas']) ? 'selected' : ''; ?>>
                                        <?php echo htmlspecialchars($pregunta['pregunta']); ?>
                                        <?php if ($pregunta['tiporespuesta']): ?>
                                            (<?php echo htmlspecialchars($pregunta['tiporespuesta']); ?>)
                                        <?php endif; ?>
                                    </option>
                                <?php endforeach; ?>
                            </select>
                        </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="detalle_encu_pregunta.php" class="btn btn-secondary">
                            <i class="fas fa-times"></i> Cancelar
                        </a>
                    </div>
                </form>
            </div>
        </div>
    <?php else: ?>
        <!-- Search and filter form -->
        <div class="card mb-4">
            <div class="card-body">
                <form method="GET" action="detalle_encu_pregunta.php" class="row g-3">
                    <div class="col-md-5">
                        <input type="text" class="form-control" name="search" 
                               placeholder="Buscar por encuesta, pregunta o tipo de respuesta..."
                               value="<?php echo isset($_GET['search']) ? htmlspecialchars($_GET['search']) : ''; ?>">
                    </div>
                    <div class="col-md-4">
                        <select name="filter_encuesta" class="form-select">
                            <option value="0">Todas las encuestas</option>
                            <?php foreach ($encuestas as $encuesta): ?>
                                <option value="<?php echo $encuesta['codencuesta']; ?>"
                                    <?php echo (isset($_GET['filter_encuesta']) && $_GET['filter_encuesta'] == $encuesta['codencuesta']) ? 'selected' : ''; ?>>
                                    <?php echo htmlspecialchars($encuesta['encuesta']); ?>
                                </option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                    <div class="col-md-3">
                        <button type="submit" class="btn btn-primary">
                            <i class="fas fa-search"></i> Buscar
                        </button>
                        <?php if (isset($_GET['search']) || (isset($_GET['filter_encuesta']) && $_GET['filter_encuesta'] > 0)): ?>
                            <a href="detalle_encu_pregunta.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($detalles)): ?>
                    <div class="text-center py-5">
                        <i class="fas fa-link fa-4x text-muted mb-3"></i>
                        <p class="text-muted">No hay relaciones registradas</p>
                        <a href="?create" class="btn btn-primary">
                            <i class="fas fa-plus"></i> Crear Primera Relación
                        </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"></i> Pregunta</th>
                                    <th><i class="fas fa-list"></i> Tipo Respuesta</th>
                                    <th><i class="fas fa-cogs"></i> Acciones</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php foreach ($detalles as $detalle): ?>
                                    <tr>
                                        <td>
                                            <span class="badge bg-primary rounded-pill"><?php echo $detalle['codencupregu']; ?></span>
                                        </td>
                                        <td>
                                            <strong><?php echo htmlspecialchars($detalle['encuesta'] ?: '-'); ?></strong>
                                        </td>
                                        <td>
                                            <?php echo htmlspecialchars($detalle['pregunta'] ?: '-'); ?>
                                        </td>
                                        <td>
                                            <?php if ($detalle['tiporespuesta']): ?>
                                                <span class="badge bg-success">
                                                    <?php echo htmlspecialchars($detalle['tiporespuesta']); ?>
                                                </span>
                                            <?php else: ?>
                                                <span class="text-muted">-</span>
                                            <?php endif; ?>
                                        </td>
                                        <td>
                                            <div class="btn-group" role="group">
                                                <a href="?edit=<?php echo $detalle['codencupregu']; ?>" 
                                                   class="btn btn-sm btn-warning" 
                                                   title="Editar">
                                                    <i class="fas fa-edit"></i>
                                                </a>
                                                <a href="?delete=<?php echo $detalle['codencupregu']; ?>" 
                                                   class="btn btn-sm btn-danger"
                                                   onclick="return confirm('¿Está seguro de eliminar esta relación?')"
                                                   title="Eliminar">
                                                    <i class="fas fa-trash"></i>
                                                </a>
                                            </div>
                                        </td>
                                    </tr>
                                <?php endforeach; ?>
                            </tbody>
                        </table>
                    </div>
                <?php endif; ?>
            </div>
        </div>
    <?php endif; ?>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Form validation
    const form = document.querySelector('form[method="POST"]');
    if (form) {
        form.addEventListener('submit', function(e) {
            const codencuesta = form.querySelector('select[name="codencuesta"]').value;
            const codpreguntas = form.querySelector('select[name="codpreguntas"]').value;
            
            if (!codencuesta || !codpreguntas) {
                e.preventDefault();
                alert('La encuesta y la pregunta son obligatorias');
                return false;
            }
        });
    }
});
</script>

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

