<?php
$page_title = 'Registro de Actividad del Sistema';
include __DIR__ . '/header.php';

// Verificar permisos - solo administradores pueden ver logs
require_role(['administrador', 'admin']);

include __DIR__ . '/navbar.php';

// Ruta del archivo de log
$log_file = __DIR__ . '/../logs/app.log';
$logs_per_page = 50;
$page = isset($_GET['page']) ? max(1, intval($_GET['page'])) : 1;

// Leer el archivo de log
$log_content = '';
$total_lines = 0;
$log_lines = [];

if (file_exists($log_file)) {
    $log_lines = array_reverse(file($log_file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES));
    $total_lines = count($log_lines);

    // Paginación
    $start = ($page - 1) * $logs_per_page;
    $log_lines = array_slice($log_lines, $start, $logs_per_page);
} else {
    $log_content = 'No se encontró el archivo de log.';
}

$total_pages = ceil($total_lines / $logs_per_page);
?>

<div class="container py-4">
    <div class="d-flex justify-content-between align-items-center mb-4">
        <h2 style="color:#484A67;">
            <i class="bi bi-file-text me-2"></i>Registro de Actividad del Sistema
        </h2>
        <div>
            <a href="menu.php" class="btn btn-outline-secondary me-2">
                <i class="bi bi-arrow-left me-1"></i>Volver al Menú
            </a>
            <?php if (file_exists($log_file)): ?>
                <button class="btn btn-outline-danger" onclick="limpiarLogs()">
                    <i class="bi bi-trash me-1"></i>Limpiar Logs
                </button>
            <?php endif; ?>
        </div>
    </div>

    <?php if (!empty($log_lines)): ?>
        <!-- Información del log -->
        <div class="card mb-4">
            <div class="card-body">
                <div class="row">
                    <div class="col-md-3">
                        <div class="text-center">
                            <h5 class="text-primary"><?= number_format($total_lines) ?></h5>
                            <small class="text-muted">Total de entradas</small>
                        </div>
                    </div>
                    <div class="col-md-3">
                        <div class="text-center">
                            <h5 class="text-info"><?= $page ?> / <?= $total_pages ?></h5>
                            <small class="text-muted">Página actual</small>
                        </div>
                    </div>
                    <div class="col-md-3">
                        <div class="text-center">
                            <h5 class="text-success"><?= number_format(filesize($log_file) / 1024, 1) ?> KB</h5>
                            <small class="text-muted">Tamaño del archivo</small>
                        </div>
                    </div>
                    <div class="col-md-3">
                        <div class="text-center">
                            <h5 class="text-warning"><?= date('d/m/Y H:i', filemtime($log_file)) ?></h5>
                            <small class="text-muted">Última modificación</small>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <!-- Paginación superior -->
        <?php if ($total_pages > 1): ?>
            <nav aria-label="Navegación de logs" class="mb-3">
                <ul class="pagination justify-content-center">
                    <?php if ($page > 1): ?>
                        <li class="page-item">
                            <a class="page-link" href="?page=<?= $page - 1 ?>">
                                <i class="bi bi-chevron-left"></i> Anterior
                            </a>
                        </li>
                    <?php endif; ?>

                    <?php for ($i = max(1, $page - 2); $i <= min($total_pages, $page + 2); $i++): ?>
                        <li class="page-item <?= $i == $page ? 'active' : '' ?>">
                            <a class="page-link" href="?page=<?= $i ?>"><?= $i ?></a>
                        </li>
                    <?php endfor; ?>

                    <?php if ($page < $total_pages): ?>
                        <li class="page-item">
                            <a class="page-link" href="?page=<?= $page + 1 ?>">
                                Siguiente <i class="bi bi-chevron-right"></i>
                            </a>
                        </li>
                    <?php endif; ?>
                </ul>
            </nav>
        <?php endif; ?>

        <!-- Contenido del log -->
        <div class="card">
            <div class="card-header">
                <h5 class="mb-0">Entradas de Log (Más recientes primero)</h5>
            </div>
            <div class="card-body p-0">
                <div class="table-responsive">
                    <table class="table table-sm table-hover mb-0">
                        <thead class="table-dark">
                            <tr>
                                <th style="width: 140px;">Fecha/Hora</th>
                                <th style="width: 80px;">Nivel</th>
                                <th>Mensaje</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php foreach ($log_lines as $line): ?>
                                <?php
                                // Parsear la línea de log (formato básico)
                                $nivel = 'INFO';
                                $fecha = '';
                                $mensaje = htmlspecialchars($line);

                                // Intentar extraer fecha y nivel si están presentes
                                if (preg_match('/^\[(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\]/', $line, $matches)) {
                                    $fecha = $matches[1];
                                    $mensaje = htmlspecialchars(substr($line, strlen($matches[0]) + 1));
                                }

                                if (strpos($line, 'ERROR') !== false) {
                                    $nivel = 'ERROR';
                                    $badge_class = 'bg-danger';
                                } elseif (strpos($line, 'WARNING') !== false) {
                                    $nivel = 'WARNING';
                                    $badge_class = 'bg-warning text-dark';
                                } elseif (strpos($line, 'INFO') !== false) {
                                    $nivel = 'INFO';
                                    $badge_class = 'bg-info';
                                } else {
                                    $badge_class = 'bg-secondary';
                                }
                                ?>
                                <tr>
                                    <td class="font-monospace small"><?= $fecha ?: '-' ?></td>
                                    <td>
                                        <span class="badge <?= $badge_class ?>"><?= $nivel ?></span>
                                    </td>
                                    <td class="font-monospace small"><?= $mensaje ?></td>
                                </tr>
                            <?php endforeach; ?>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>

        <!-- Paginación inferior -->
        <?php if ($total_pages > 1): ?>
            <nav aria-label="Navegación de logs" class="mt-3">
                <ul class="pagination justify-content-center">
                    <?php if ($page > 1): ?>
                        <li class="page-item">
                            <a class="page-link" href="?page=<?= $page - 1 ?>">
                                <i class="bi bi-chevron-left"></i> Anterior
                            </a>
                        </li>
                    <?php endif; ?>

                    <?php for ($i = max(1, $page - 2); $i <= min($total_pages, $page + 2); $i++): ?>
                        <li class="page-item <?= $i == $page ? 'active' : '' ?>">
                            <a class="page-link" href="?page=<?= $i ?>"><?= $i ?></a>
                        </li>
                    <?php endfor; ?>

                    <?php if ($page < $total_pages): ?>
                        <li class="page-item">
                            <a class="page-link" href="?page=<?= $page + 1 ?>">
                                Siguiente <i class="bi bi-chevron-right"></i>
                            </a>
                        </li>
                    <?php endif; ?>
                </ul>
            </nav>
        <?php endif; ?>

    <?php else: ?>
        <div class="card">
            <div class="card-body text-center py-5">
                <i class="bi bi-file-text" style="font-size: 3rem; color: #6c757d;"></i>
                <h4 class="mt-3 text-muted">No hay entradas de log</h4>
                <p class="text-muted">El archivo de log está vacío o no existe.</p>
            </div>
        </div>
    <?php endif; ?>
</div>

<script>
    function limpiarLogs() {
        if (confirm('¿Está seguro de que desea limpiar todos los logs del sistema? Esta acción no se puede deshacer.')) {
            fetch(src('limpiar_logs.php'), {
                    method: 'POST',
                    headers: {
                        'Content-Type': 'application/json',
                    }
                })
                .then(response => response.json())
                .then(data => {
                    if (data.success) {
                        alert('Logs limpiados correctamente.');
                        location.reload();
                    } else {
                        alert('Error al limpiar los logs: ' + data.error);
                    }
                })
                .catch(error => {
                    alert('Error al limpiar los logs: ' + error.message);
                });
        }
    }
</script>

<style>
    .font-monospace {
        font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace !important;
    }

    .table-responsive {
        max-height: 600px;
        overflow-y: auto;
    }

    .card-body table tbody tr:hover {
        background-color: #f8f9fa;
    }
</style>

<?php include __DIR__ . '/footer.php'; ?>