<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

include('../config/conexion.php');

// Configuración de paginación
$registros_por_pagina = 10;
$pagina = isset($_GET['pagina']) ? max(1, (int)$_GET['pagina']) : 1;
$offset = ($pagina - 1) * $registros_por_pagina;

// Obtener la lista de usuarios para el filtro
$usuarios_sql = "SELECT id, nombre FROM usuarios ORDER BY nombre ASC";
$usuarios_result = $conexion->query($usuarios_sql);

// Obtener el usuario seleccionado
$usuario_id = isset($_GET['usuario_id']) ? $_GET['usuario_id'] : '';

// Construir la consulta principal
$sql = "SELECT u.nombre AS usuario, ra.accion, ra.detalles, ra.fecha 
        FROM registro_actividad ra
        JOIN usuarios u ON ra.idusuario = u.id";

$count_sql = "SELECT COUNT(*) AS total_faltas FROM registro_actividad";

$params = [];
$types = '';

if (!empty($usuario_id)) {
    $sql .= " WHERE ra.idusuario = ?";
    $count_sql .= " WHERE idusuario = ?";
    $params[] = (int)$usuario_id;
    $types .= 'i';
}

// Siempre agregar el ordenamiento y paginación
$sql .= " ORDER BY ra.fecha DESC LIMIT ?, ?";
$params[] = (int)$offset;
$params[] = (int)$registros_por_pagina;
$types .= 'ii';

// Obtener el total de faltas para paginación
$count_stmt = $conexion->prepare($count_sql);
if (!empty($usuario_id)) {
    $count_stmt->bind_param('i', $usuario_id);
}
$count_stmt->execute();

// Usar bind_result para obtener el total de faltas
$count_stmt->bind_result($total_faltas);
$count_stmt->fetch();
$count_stmt->close();

// Calcular total de páginas
$total_paginas = ceil($total_faltas / $registros_por_pagina);

// Preparar la consulta principal
$stmt = $conexion->prepare($sql);
if ($types !== '') {
    $stmt->bind_param($types, ...$params);
}
$stmt->execute();

// Usar bind_result para obtener los datos de cada fila
$stmt->bind_result($usuario, $accion, $detalles, $fecha);

// Inicializar un array para almacenar los resultados
$registros = [];

while ($stmt->fetch()) {
    $registros[] = [
        'usuario' => $usuario,
        'accion' => $accion,
        'detalles' => $detalles,
        'fecha' => $fecha
    ];
}

$stmt->close();
?>

<!DOCTYPE html>
<html lang="es">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Historial de Faltas</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
</head>

<body>
    <div class="container mt-4">
        <div class="d-flex justify-content-center mt-4"></div>
        <div class="d-flex justify-content-between mb-3">
            <a href="../inicio_alumno.php" class="btn btn-primary">Inicio</a>
            <button class="btn btn-success" onclick="window.print()">Imprimir</button>
            <a href="../logout.php" class="btn btn-danger">Cerrar sesión</a>
        </div>

        <h2 class="mb-4 text-center">Historial de Faltas Registradas</h2>

        <form method="GET" class="mb-3">
            <label for="usuario_id" class="form-label">Filtrar por usuario:</label>
            <select name="usuario_id" id="usuario_id" class="form-select" onchange="this.form.submit()">
                <option value="">Todos los usuarios</option>
                <?php while ($user = $usuarios_result->fetch_assoc()): ?>
                    <option value="<?php echo $user['id']; ?>"
                        <?php echo ($user['id'] == $usuario_id) ? 'selected' : ''; ?>>
                        <?php echo htmlspecialchars($user['nombre']); ?>
                    </option>
                <?php endwhile; ?>
            </select>
            <input type="hidden" name="pagina" value="1">
        </form>

        <div class="alert alert-info">
            <strong>Total de faltas registradas:</strong> <?php echo $total_faltas; ?>
        </div>

        <?php if (count($registros) > 0): ?>
            <table class="table table-striped table-bordered">
                <thead class="table-dark">
                    <tr>
                        <th>Usuario</th>
                        <th>Acción</th>
                        <th>Detalles</th>
                        <th>Fecha</th>
                    </tr>
                </thead>
                <tbody>
                    <?php foreach ($registros as $row): ?>
                        <tr>
                            <td><?php echo htmlspecialchars($row['usuario']); ?></td>
                            <td><?php echo htmlspecialchars($row['accion']); ?></td>
                            <td><?php echo htmlspecialchars($row['detalles']); ?></td>
                            <td><?php echo date("d/m/Y H:i:s", strtotime($row['fecha'])); ?></td>
                        </tr>
                    <?php endforeach; ?>
                </tbody>
            </table>

            <nav>
                <ul class="pagination justify-content-center">
                    <?php if ($pagina > 1): ?>
                        <li class="page-item">
                            <a class="page-link"
                                href="?pagina=<?php echo $pagina - 1; ?>&usuario_id=<?php echo $usuario_id; ?>">Anterior</a>
                        </li>
                    <?php endif; ?>

                    <?php for ($i = 1; $i <= $total_paginas; $i++): ?>
                        <li class="page-item <?php echo ($i == $pagina) ? 'active' : ''; ?>">
                            <a class="page-link"
                                href="?pagina=<?php echo $i; ?>&usuario_id=<?php echo $usuario_id; ?>"><?php echo $i; ?></a>
                        </li>
                    <?php endfor; ?>

                    <?php if ($pagina < $total_paginas): ?>
                        <li class="page-item">
                            <a class="page-link"
                                href="?pagina=<?php echo $pagina + 1; ?>&usuario_id=<?php echo $usuario_id; ?>">Siguiente</a>
                        </li>
                    <?php endif; ?>
                </ul>
            </nav>
        <?php else: ?>
            <div class="alert alert-warning">No hay registros para mostrar.</div>
        <?php endif; ?>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
</body>

</html>