<?php
session_start();
require_once '../includes/funciones_registro.php';
require_once '../includes/db.php';
require_once '../includes/config.php';
require_once '../includes/theme_only.php';

// Verificar que el usuario esté logueado
if (!isset($_SESSION['usuario_id'])) {
    error_log("Acceso denegado a historial_actividades: usuario_id no está definido en la sesión");
    header('Location: ../login.php');
    exit();
}

// Verificar que sea un administrador - con más condiciones
$esAdmin = false;

// Verificar todas las posibles variables de sesión que indiquen rol de administrador
if (
    (isset($_SESSION['rol']) && $_SESSION['rol'] == 'admin') ||
    (isset($_SESSION['tipo_usuario']) && $_SESSION['tipo_usuario'] == 'admin')
) {
    $esAdmin = true;
}

if (!$esAdmin) {
    error_log("Acceso denegado a historial_actividades: el usuario no es administrador. Rol: " . 
              (isset($_SESSION['rol']) ? $_SESSION['rol'] : "no definido") . ", Tipo: " . 
              (isset($_SESSION['tipo_usuario']) ? $_SESSION['tipo_usuario'] : "no definido"));
    header('Location: ../index.php');
    exit();
}

// Inicializar la conexión usando la clase Database
$db = new Database();
$pdo = $db->getPDO();

// Valores predeterminados para configuración
$titulo_pagina = 'Historial de Actividades';
$descripcion_pagina = 'Historial de acciones realizadas por usuarios';
$color_primario = '#007bff';
$color_secundario = '#6c757d';
$color_acento = '#28a745';
$favicon = '../uploads/config/favicon.ico';
$logo = '../uploads/config/logo.png';
$nombre_empresa = 'Sistema de Administración';
$encabezado_html = '';
$pie_pagina_html = '';
$codigo_head = '';
$codigo_footer = '';

// Cargar configuración del sitio
$config = [];
try {
    // Verificar si la tabla existe
    $stmt = $pdo->query("SHOW TABLES LIKE 'configuracion'");
    $tablaConfiguracionExiste = $stmt->rowCount() > 0;
    
    if ($tablaConfiguracionExiste) {
        $stmt = $pdo->prepare("SELECT * FROM configuracion WHERE id = 1");
        $stmt->execute();
        $config = $stmt->fetch(PDO::FETCH_ASSOC);
        
        // Asignar valores de configuración si existen, usando los nombres de columna correctos
        if ($config) {
            $color_primario = isset($config['color_principal']) && !empty($config['color_principal']) ? $config['color_principal'] : $color_primario;
            $color_secundario = isset($config['color_secundario']) && !empty($config['color_secundario']) ? $config['color_secundario'] : $color_secundario;
            
            // Rutas correctas para favicon y logo en /uploads/config
            $favicon = isset($config['favicon']) && !empty($config['favicon']) ? '../uploads/config/' . $config['favicon'] : $favicon;
            $logo = isset($config['logo']) && !empty($config['logo']) ? '../uploads/config/' . $config['logo'] : $logo;
            
            $nombre_empresa = isset($config['nombre_comercio']) && !empty($config['nombre_comercio']) ? $config['nombre_comercio'] : $nombre_empresa;
            
            // Verificar columnas de encabezado y pie de página (si existen)
            $encabezado_html = isset($config['encabezado_admin']) && !empty($config['encabezado_admin']) ? $config['encabezado_admin'] : '';
            $pie_pagina_html = isset($config['pie_pagina_admin']) && !empty($config['pie_pagina_admin']) ? $config['pie_pagina_admin'] : '';
            $codigo_head = isset($config['codigo_head']) && !empty($config['codigo_head']) ? $config['codigo_head'] : '';
            $codigo_footer = isset($config['codigo_footer']) && !empty($config['codigo_footer']) ? $config['codigo_footer'] : '';
        }
        
    }
} catch (PDOException $e) {
    error_log("Error al cargar configuración: " . $e->getMessage());
}

// Filtros para la búsqueda
$id_usuario = isset($_GET['id_usuario']) ? intval($_GET['id_usuario']) : 0;
$tipo_accion = isset($_GET['tipo_accion']) ? $_GET['tipo_accion'] : '';
$limite = isset($_GET['limite']) ? intval($_GET['limite']) : 100;

// Filtros de fecha y hora
$fecha_desde = isset($_GET['fecha_desde']) ? $_GET['fecha_desde'] : '';
$fecha_hasta = isset($_GET['fecha_hasta']) ? $_GET['fecha_hasta'] : '';
$hora_desde = isset($_GET['hora_desde']) ? $_GET['hora_desde'] : '';
$hora_hasta = isset($_GET['hora_hasta']) ? $_GET['hora_hasta'] : '';

// Construir la consulta usando PDO
$query = "SELECT ra.*, u.nombre as nombre_usuario 
          FROM registro_actividad_usuario ra 
          LEFT JOIN usuarios u ON ra.id_usuario = u.id 
          WHERE 1=1";
$params = [];

// Aplicar filtros a la consulta
if ($id_usuario > 0) {
    $query .= " AND ra.id_usuario = ?";
    $params[] = $id_usuario;
}

if (!empty($tipo_accion)) {
    $query .= " AND ra.tipo_accion = ?";
    $params[] = $tipo_accion;
}

// Aplicar filtro de fechas y horas
if (!empty($fecha_desde)) {
    if (!empty($hora_desde)) {
        $query .= " AND ra.fecha_creacion >= ?";
        $params[] = $fecha_desde . ' ' . $hora_desde . ':00';
    } else {
        $query .= " AND ra.fecha_creacion >= ?";
        $params[] = $fecha_desde . ' 00:00:00';
    }
}

if (!empty($fecha_hasta)) {
    if (!empty($hora_hasta)) {
        $query .= " AND ra.fecha_creacion <= ?";
        $params[] = $fecha_hasta . ' ' . $hora_hasta . ':59';
    } else {
        $query .= " AND ra.fecha_creacion <= ?";
        $params[] = $fecha_hasta . ' 23:59:59';
    }
}

// Ordenar por fecha de creación, del más reciente al más antiguo
$query .= " ORDER BY ra.fecha_creacion DESC";

// Aplicar límite - corregir la forma de usar LIMIT
if ($limite > 0) {
    $query .= " LIMIT " . $limite;
}

// Preparar y ejecutar la consulta
$stmt = $pdo->prepare($query);
$stmt->execute($params);
$actividades = $stmt->fetchAll(PDO::FETCH_ASSOC);

// Contar las actividades
$numActividades = count($actividades);

// Si no hay actividades, verificar si hay registros en la tabla
if ($numActividades == 0) {
    try {
        $countStmt = $pdo->query("SELECT COUNT(*) as total FROM registro_actividad_usuario");
        $totalRegistros = $countStmt->fetch(PDO::FETCH_ASSOC)['total'];
        error_log("Total de registros en registro_actividad_usuario: $totalRegistros");
    } catch (PDOException $e) {
        error_log("Error al contar registros: " . $e->getMessage());
    }
}

// Obtener lista de usuarios para el filtro
$usuarios = [];
try {
    $stmt = $pdo->query("SELECT id, nombre FROM usuarios ORDER BY nombre");
    $usuarios = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
    error_log("Error al obtener usuarios: " . $e->getMessage());
}

// Obtener tipos de acciones para el filtro
$tipos_acciones = [];
try {
    $stmt = $pdo->query("SELECT DISTINCT tipo_accion FROM registro_actividad_usuario ORDER BY tipo_accion");
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $tipos_acciones[] = $row['tipo_accion'];
    }
} catch (PDOException $e) {
    error_log("Error al obtener tipos de acciones: " . $e->getMessage());
}

// Función para verificar existencia de archivos
function fileExists($path) {
    // Convertir la ruta relativa a absoluta usando la ubicación del script actual
    $fullPath = realpath(dirname(__FILE__) . '/' . $path);
    return file_exists($fullPath);
}
echo getThemeCSS();
?>

<!DOCTYPE html>
<html lang="es">
<head>
<?php
    // Modo oscuro
    require_once '../includes/dark_mode.php';
    ?>
    <meta name="color-scheme" content="light dark">
    <?php echo getDarkModeStyles(); ?>

    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?= htmlspecialchars($titulo_pagina) ?></title>
    <meta name="description" content="<?= htmlspecialchars($descripcion_pagina) ?>">
    <?php if(!empty($favicon) && fileExists($favicon)): ?>
    <link rel="shortcut icon" href="<?= htmlspecialchars($favicon) ?>" type="image/x-icon">
    <?php else: ?>
    <!-- Favicon no encontrado: <?= htmlspecialchars($favicon) ?> -->
    <?php endif; ?>
    <link rel="stylesheet" href="../css/styles.css">
    <link rel="stylesheet" href="../admin/css/bootstrap.min.css">
    <!-- Añadir Bootstrap DatePicker CSS -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/css/bootstrap-datepicker.min.css">
    <!-- Añadir CSS para clockpicker -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/clockpicker/0.0.7/bootstrap-clockpicker.min.css">
    <!-- Añadir FontAwesome para el icono de impresión -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
    <style>
        :root {
            --color-primario: <?= $color_primario ?>;
            --color-secundario: <?= $color_secundario ?>;
            --color-acento: <?= $color_acento ?>;
        }
        body {
            padding: 20px;
        }
        .filtros {
            background-color: #f8f9fa;
            padding: 15px;
            border-radius: 5px;
            margin-bottom: 20px;
        }
        .form-group {
            margin-bottom: 15px;
        }
        .back-link {
            margin-top: 20px;
        }
        .table-responsive {
            margin-top: 20px;
        }
        /* Estilizar todos los elementos con color azul para usar el color primario */
        .btn-primary {
            background-color: var(--color-primario);
            border-color: var(--color-primario);
        }
        .btn-primary:hover {
            background-color: <?= adjustBrightness($color_primario, -15) ?>;
            border-color: <?= adjustBrightness($color_primario, -15) ?>;
        }
        .btn-secondary {
            background-color: var(--color-secundario);
            border-color: var(--color-secundario);
        }
        .btn-secondary:hover {
            background-color: <?= adjustBrightness($color_secundario, -15) ?>;
            border-color: <?= adjustBrightness($color_secundario, -15) ?>;
        }
        .table-dark {
            background-color: var(--color-primario) !important;
        }
        .table-dark th {
            background-color: var(--color-primario) !important;
        }
        .page-header {
            display: flex;
            align-items: center;
            margin-bottom: 20px;
            color: var(--color-primario);
        }
        .page-header img {
            max-height: 50px;
            margin-right: 15px;
        }
        /* Links y otros elementos azules */
        a {
            color: var(--color-primario);
        }
        a:hover {
            color: <?= adjustBrightness($color_primario, -20) ?>;
        }
        .text-primary {
            color: var(--color-primario) !important;
        }
        .border-primary {
            border-color: var(--color-primario) !important;
        }
        .bg-primary {
            background-color: var(--color-primario) !important;
        }
        /* Formularios */
        .form-select:focus,
        .form-control:focus {
            border-color: var(--color-primario);
            box-shadow: 0 0 0 0.25rem <?= adjustOpacity($color_primario, 0.25) ?>;
        }
        /* Paginación */
        .page-item.active .page-link {
            background-color: var(--color-primario);
            border-color: var(--color-primario);
        }
        .page-link {
            color: var(--color-primario);
        }
        .page-link:hover {
            color: <?= adjustBrightness($color_primario, -20) ?>;
        }
        /* Estilos para los campos de fecha y hora */
        .input-daterange,
        .input-timerange {
            display: flex;
            flex-wrap: wrap;
            align-items: flex-end;
        }
        
        .input-daterange .input-group,
        .input-timerange .input-group {
            width: auto;
            margin-right: 10px;
            margin-bottom: 10px;
        }
        
        /* Ajustes para dispositivos móviles */
        @media (max-width: 767px) {
            .input-daterange,
            .input-timerange {
                flex-direction: column;
            }
            
            .input-daterange .input-group,
            .input-timerange .input-group {
                width: 100%;
            }
        }
        
        /* Estilos para el clockpicker */
        .clockpicker-popover {
            z-index: 1060;
        }
        
        .clockpicker-popover .popover-title {
            background-color: var(--color-primario);
            color: white;
        }
        
        .clockpicker-popover .clockpicker-canvas line,
        .clockpicker-popover .clockpicker-canvas circle {
            stroke: var(--color-primario);
        }
        
        .clockpicker-popover .clockpicker-canvas-bearing,
        .clockpicker-popover .clockpicker-canvas-fg {
            fill: var(--color-primario);
        }
        
        .clockpicker-popover .btn-primary {
            background-color: var(--color-primario);
            border-color: var(--color-primario);
        }
        
        /* Estilos para el botón de impresión */
        .btn-print {
            margin-top: 10px;
            margin-bottom: 10px;
        }
        
        /* Estilos mejorados para impresión con múltiples páginas */
        @media print {
            body {
                padding: 0 !important;
                margin: 0 !important;
                font-size: 10pt !important;
                background-color: white !important;
            }
            
            .container {
                width: 100% !important;
                max-width: 100% !important;
                padding: 0 !important;
                margin: 0 !important;
                display: block !important;
            }
            
            .filtros, .btn-print, .back-link,
            .container-fluid, .no-print, .page-header {
                display: none !important;
            }
            
            .table-responsive {
                overflow: visible !important;
                margin-top: 0 !important;
                padding-top: 0 !important;
                display: block !important;
                width: 100% !important;
            }
            
            .table {
                width: 100% !important;
                border-collapse: collapse !important;
                page-break-inside: auto !important;
                margin-top: 10mm !important; /* Espacio para el encabezado */
                margin-bottom: 10mm !important; /* Espacio para el pie de página */
            }
            
            /* Eliminar cualquier salto de página forzado */
            .no-page-break {
                page-break-inside: avoid !important;
            }
            
            /* Encabezado de página - cambiar completamente a posición normal */
            .print-header {
                display: block !important;
                position: relative !important;
                width: 100% !important;
                border-bottom: 1px solid #ddd !important;
                padding: 5mm 0 3mm 0 !important;
                margin: 0 !important;
            }
            
            .print-header img {
                max-height: 30px !important;
            }
            
            .print-header h1 {
                font-size: 14pt !important;
                margin: 0 !important;
            }
            
            .print-header p {
                margin: 0 !important;
                padding: 0 !important;
            }
            
            /* Información de filtros aplicados - reducir tamaño */
            .print-info {
                display: block !important;
                margin: 3mm 0 !important;
                font-size: 9pt !important;
                color: #666 !important;
            }
            
            .print-info p {
                margin: 0 !important;
                padding: 0 !important;
                line-height: 1.3 !important;
            }
            
            /* Pie de página para impresión - ajustar posición */
            .print-footer {
                display: block !important;
                font-size: 8pt !important;
                text-align: center !important;
                color: #666 !important;
                border-top: 1px solid #ddd !important;
                padding-top: 2mm !important;
                margin-top: 5mm !important;
            }
            
            /* Ocultar elementos innecesarios */
            .print-only {
                display: block !important;
            }
            
            /* Ajustar márgenes para las páginas */
            @page {
                margin: 5mm 5mm 5mm 5mm !important; /* Reducir todos los márgenes */
                padding: 0 !important;
            }
            
            /* Estilos específicos para tablas */
            .table th, .table td {
                padding: 2mm !important;
                font-size: 9pt !important;
                white-space: normal !important;
            }
            
            /* Corregir comportamiento de contenedores */
            html {
                overflow-x: hidden !important;
            }
        }
        
        /* Ocultar estos elementos por defecto */
        .print-info, .print-footer, .print-header {
            display: none;
        }
    </style>

    <?php if(!empty($codigo_head)): ?>
    <!-- Código personalizado en head -->
    <?= $codigo_head ?>
    <?php endif; ?>
</head>
<body>
    <?php if(!empty($encabezado_html)): ?>
    <div class="container-fluid mb-3 no-print">
        <?= $encabezado_html ?>
    </div>
    <?php endif; ?>
    
    <div class="container">
        <!-- Reorganización del contenido para impresión -->
        <div id="print-document">
            <!-- Encabezado para impresión -->
            <div class="print-header">
                <?php if(!empty($logo) && fileExists($logo)): ?>
                <img src="<?= htmlspecialchars($logo) ?>" alt="<?= htmlspecialchars($nombre_empresa) ?>">
                <?php endif; ?>
                <div>
                    <h1><?= htmlspecialchars($nombre_empresa) ?></h1>
                    <p>Historial de Actividades</p>
                </div>
            </div>

            <!-- Información para versión impresa -->
            <div class="print-info">
                <p>
                    <strong>Reporte de actividades</strong><br>
                    <strong>Fecha de generación:</strong> <?= date('d/m/Y H:i') ?><br>
                    <?php if($id_usuario > 0): ?>
                        <strong>Usuario:</strong> <?= htmlspecialchars(obtenerNombreUsuario($id_usuario, $pdo)) ?><br>
                    <?php endif; ?>
                    <?php if(!empty($tipo_accion)): ?>
                        <strong>Tipo de acción:</strong> <?= htmlspecialchars(str_replace('_', ' ', ucfirst($tipo_accion))) ?><br>
                    <?php endif; ?>
                    <?php if(!empty($fecha_desde) || !empty($fecha_hasta)): ?>
                        <strong>Período:</strong> 
                        <?= !empty($fecha_desde) ? htmlspecialchars($fecha_desde) : 'Inicio' ?> 
                        <?= !empty($hora_desde) ? htmlspecialchars($hora_desde) : '00:00' ?> - 
                        <?= !empty($fecha_hasta) ? htmlspecialchars($fecha_hasta) : date('Y-m-d') ?> 
                        <?= !empty($hora_hasta) ? htmlspecialchars($hora_hasta) : '23:59' ?>
                    <?php endif; ?>
                    <br>
                    <strong>Resultados:</strong> <?= count($actividades) ?> registros encontrados
                </p>
            </div>
        </div>
        
        <!-- Encabezado y navegación superior (solo visible en pantalla) -->
        <div class="d-flex justify-content-between align-items-center mb-3">
            <div class="page-header">
                <?php if(!empty($logo) && fileExists($logo)): ?>
                <img src="<?= htmlspecialchars($logo) ?>" alt="<?= htmlspecialchars($nombre_empresa) ?>">
                <?php else: ?>
                <!-- Logo no encontrado: <?= htmlspecialchars($logo) ?> -->
                <?php endif; ?>
                <h1>Historial de Actividades</h1>
            </div>
            <div class="back-link-top">
                <a href="../admin/index.php" class="btn btn-secondary">
                    <i class="fas fa-arrow-left"></i> Volver al Panel
                </a>
            </div>
        </div>
        
        <!-- Botón de impresión (solo visible en pantalla) -->
        <div class="d-flex justify-content-between btn-print">
            <div>
                <span class="text-muted">Total de registros: <?= count($actividades) ?></span>
            </div>
            <div>
                <button type="button" class="btn btn-primary" onclick="imprimirHistorial()">
                    <i class="fas fa-print"></i> Imprimir
                </button>
            </div>
        </div>

        <!-- Formulario de filtros (solo visible en pantalla) -->
        <div class="filtros">
            <form method="GET" action="" class="row">
                <div class="col-md-4 form-group">
                    <label for="id_usuario">Usuario:</label>
                    <select name="id_usuario" id="id_usuario" class="form-select">
                        <option value="">Todos los usuarios</option>
                        <?php foreach ($usuarios as $usuario): ?>
                            <option value="<?= $usuario['id'] ?>" <?= $id_usuario == $usuario['id'] ? 'selected' : '' ?>>
                                <?= htmlspecialchars($usuario['nombre']) ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </div>
                
                <div class="col-md-4 form-group">
                    <label for="tipo_accion">Tipo de Acción:</label>
                    <select name="tipo_accion" id="tipo_accion" class="form-select">
                        <option value="">Todas las acciones</option>
                        <?php foreach ($tipos_acciones as $tipo): ?>
                            <option value="<?= $tipo ?>" <?= $tipo_accion == $tipo ? 'selected' : '' ?>>
                                <?= htmlspecialchars(str_replace('_', ' ', ucfirst($tipo))) ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </div>
                
                <div class="col-md-4 form-group">
                    <label for="limite">Límite:</label>
                    <select name="limite" id="limite" class="form-select">
                        <option value="50" <?= $limite == 50 ? 'selected' : '' ?>>50</option>
                        <option value="100" <?= $limite == 100 ? 'selected' : '' ?>>100</option>
                        <option value="200" <?= $limite == 200 ? 'selected' : '' ?>>200</option>
                        <option value="500" <?= $limite == 500 ? 'selected' : '' ?>>500</option>
                    </select>
                </div>
                
                <!-- Filtros de fecha -->
                <div class="col-md-6 form-group">
                    <label>Rango de fechas:</label>
                    <div class="input-daterange input-group" id="datepicker">
                        <div class="input-group">
                            <span class="input-group-text">Desde</span>
                            <input type="text" class="form-control datepicker" name="fecha_desde" id="fecha_desde" 
                                   value="<?= htmlspecialchars($fecha_desde) ?>" placeholder="YYYY-MM-DD" 
                                   autocomplete="off">
                        </div>
                        <div class="input-group">
                            <span class="input-group-text">Hasta</span>
                            <input type="text" class="form-control datepicker" name="fecha_hasta" id="fecha_hasta" 
                                   value="<?= htmlspecialchars($fecha_hasta) ?>" placeholder="YYYY-MM-DD" 
                                   autocomplete="off">
                        </div>
                    </div>
                </div>
                
                <!-- Filtros de hora -->
                <div class="col-md-6 form-group">
                    <label>Rango de horas:</label>
                    <div class="input-timerange input-group">
                        <div class="input-group clockpicker" data-placement="top" data-align="left" data-autoclose="true">
                            <span class="input-group-text">Desde</span>
                            <input type="text" class="form-control" name="hora_desde" id="hora_desde" 
                                   value="<?= htmlspecialchars($hora_desde) ?>" placeholder="HH:MM" 
                                   autocomplete="off">
                        </div>
                        <div class="input-group clockpicker" data-placement="top" data-align="left" data-autoclose="true">
                            <span class="input-group-text">Hasta</span>
                            <input type="text" class="form-control" name="hora_hasta" id="hora_hasta" 
                                   value="<?= htmlspecialchars($hora_hasta) ?>" placeholder="HH:MM" 
                                   autocomplete="off">
                        </div>
                    </div>
                </div>
                
                <div class="col-12">
                    <button type="submit" class="btn btn-primary">Filtrar</button>
                    <a href="historial_actividades.php" class="btn btn-secondary">Limpiar</a>
                </div>
            </form>
        </div>

        <!-- Tabla de actividades -->
        <div class="table-responsive no-page-break">
            <table class="table table-striped table-hover">
                <thead class="table-dark">
                    <tr>
                        <th>ID</th>
                        <th>Usuario</th>
                        <th>Acción</th>
                        <th>Detalles</th>
                        <th>IP</th>
                        <th>Fecha</th>
                    </tr>
                </thead>
                <tbody>
                    <?php if (empty($actividades)): ?>
                        <tr>
                            <td colspan="6" class="text-center">
                                No se encontraron registros.
                                <?php if ($id_usuario > 0): ?>
                                    <br>No hay actividades registradas para este usuario con ID: <?= $id_usuario ?>.
                                <?php endif; ?>
                                <?php if (!empty($tipo_accion)): ?>
                                    <br>No hay actividades del tipo: <?= htmlspecialchars($tipo_accion) ?>.
                                <?php endif; ?>
                                <?php if (!empty($fecha_desde) || !empty($fecha_hasta) || !empty($hora_desde) || !empty($hora_hasta)): ?>
                                    <br>No hay actividades en el rango de tiempo seleccionado.
                                <?php endif; ?>
                            </td>
                        </tr>
                    <?php else: ?>
                        <?php foreach ($actividades as $actividad): ?>
                            <tr>
                                <td><?= $actividad['id'] ?></td>
                                <td>
                                    <?php if (isset($actividad['nombre_usuario']) && $actividad['nombre_usuario']): ?>
                                        <?= htmlspecialchars($actividad['nombre_usuario']) ?>
                                    <?php else: ?>
                                        Usuario ID: <?= $actividad['id_usuario'] ?>
                                    <?php endif; ?>
                                </td>
                                <td><?= htmlspecialchars(str_replace('_', ' ', ucfirst($actividad['tipo_accion']))) ?></td>
                                <td><?= htmlspecialchars($actividad['detalles_accion']) ?></td>
                                <td><?= htmlspecialchars($actividad['direccion_ip']) ?></td>
                                <td><?= htmlspecialchars($actividad['fecha_creacion']) ?></td>
                            </tr>
                        <?php endforeach; ?>
                    <?php endif; ?>
                </tbody>
                <!-- Pie de tabla para impresión -->
                <tfoot class="print-only" style="display: none;">
                    <tr>
                        <td colspan="6" class="text-end">
                            <small class="page-number"></small>
                        </td>
                    </tr>
                </tfoot>
            </table>
        </div>
        
        <!-- Botón volver en la parte inferior (solo visible en pantalla) -->
        <div class="back-link">
            <a href="../admin/index.php" class="btn btn-secondary">
                <i class="fas fa-arrow-left"></i> Volver al Panel de Administración
            </a>
        </div>
        
        <!-- Pie de página para impresión -->
        <div class="print-footer">
            <p><?= htmlspecialchars($nombre_empresa) ?> - Historial de Actividades - <?= date('d/m/Y') ?>
            <span class="float-end page-number"></span></p>
        </div>
    </div>
    
    <?php if(!empty($pie_pagina_html)): ?>
    <div class="container-fluid mt-5 no-print">
        <?= $pie_pagina_html ?>
    </div>
    <?php endif; ?>
    
    <script src="../admin/js/bootstrap.bundle.min.js"></script>
    <!-- Añadir jQuery y Bootstrap DatePicker JS -->
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/js/bootstrap-datepicker.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/locales/bootstrap-datepicker.es.min.js"></script>
    <!-- Añadir ClockPicker JS -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/clockpicker/0.0.7/bootstrap-clockpicker.min.js"></script>
    
    <script>
        $(document).ready(function(){
            // Configurar date picker
            $('.datepicker').datepicker({
                format: 'yyyy-mm-dd',
                autoclose: true,
                language: 'es',
                todayHighlight: true,
                clearBtn: true
            });
            
            // Configurar clock picker
            $('.clockpicker').clockpicker({
                donetext: 'Aceptar',
                autoclose: true,
                'default': 'now'
            });
            
            // Validar formato de hora antes de enviar el formulario
            $('form').on('submit', function() {
                var horaDesde = $('#hora_desde').val();
                var horaHasta = $('#hora_hasta').val();
                
                // Validar formato HH:MM
                var regex = /^([0-1]?[0-9]|2[0-3]):([0-5][0-9])$/;
                
                if (horaDesde !== "" && !regex.test(horaDesde)) {
                    alert('Por favor ingrese una hora válida en formato HH:MM para "Hora desde"');
                    $('#hora_desde').focus();
                    return false;
                }
                
                if (horaHasta !== "" && !regex.test(horaHasta)) {
                    alert('Por favor ingrese una hora válida en formato HH:MM para "Hora hasta"');
                    $('#hora_hasta').focus();
                    return false;
                }
                
                return true;
            });
        });
        
        // Función para imprimir el historial con mejor configuración
        function imprimirHistorial() {
            // Preparar para impresión
            document.querySelectorAll('.print-only').forEach(function(el) {
                el.style.display = 'table-footer-group';
            });
            
            // Eliminar cualquier clase o estilo que pueda causar el problema de página en blanco
            document.body.classList.add('print-ready');
            
            // Crear una hoja de estilo temporal para forzar el reajuste del contenido
            var style = document.createElement('style');
            style.type = 'text/css';
            style.id = 'print-fix-style';
            style.innerHTML = `
                @media print {
                    body * {
                        visibility: hidden;
                    }
                    #print-document, #print-document *, .table-responsive, .table-responsive *, .print-header, .print-header *, .print-info, .print-info *, .print-footer, .print-footer * {
                        visibility: visible;
                    }
                    .print-header {
                        position: relative;
                        top: 0;
                    }
                }
            `;
            document.head.appendChild(style);
            
            // Imprimir con un pequeño retraso para asegurar que los estilos se apliquen
            setTimeout(function() {
                window.print();
            }, 500);
            
            // Restaurar visualización
            setTimeout(function() {
                document.querySelectorAll('.print-only').forEach(function(el) {
                    el.style.display = 'none';
                });
                document.body.classList.remove('print-ready');
                document.head.removeChild(document.getElementById('print-fix-style'));
            }, 1000);
        }
    </script>
    
    <?php if(!empty($codigo_footer)): ?>
    <!-- Código personalizado en footer -->
    <?= $codigo_footer ?>
    <?php endif; ?>
</body>
</html>

<?php
// Función para ajustar el brillo de un color HEX
function adjustBrightness($hex, $steps) {
    // Quitar el # si existe
    $hex = ltrim($hex, '#');
    
    // Convertir a RGB
    $r = hexdec(substr($hex, 0, 2));
    $g = hexdec(substr($hex, 2, 2));
    $b = hexdec(substr($hex, 4, 2));
    
    // Ajustar el brillo
    $r = max(0, min(255, $r + $steps));
    $g = max(0, min(255, $g + $steps));
    $b = max(0, min(255, $b + $steps));
    
    // Convertir de nuevo a HEX
    return '#' . sprintf('%02x%02x%02x', $r, $g, $b);
}

// Función para ajustar la opacidad de un color HEX
function adjustOpacity($hex, $opacity) {
    // Quitar el # si existe
    $hex = ltrim($hex, '#');
    
    // Convertir a RGB
    $r = hexdec(substr($hex, 0, 2));
    $g = hexdec(substr($hex, 2, 2));
    $b = hexdec(substr($hex, 4, 2));
    
    // Devolver color en formato rgba
    return "rgba($r, $g, $b, $opacity)";
}

// Función para obtener nombre de usuario
function obtenerNombreUsuario($id_usuario, $pdo) {
    try {
        $stmt = $pdo->prepare("SELECT nombre FROM usuarios WHERE id = ?");
        $stmt->execute([$id_usuario]);
        $resultado = $stmt->fetch(PDO::FETCH_ASSOC);
        return $resultado ? $resultado['nombre'] : "Usuario ID: $id_usuario";
    } catch (PDOException $e) {
        return "Usuario ID: $id_usuario";
    }
}
?>
