<?php
require_once("../../functions.php");
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

if ($_SESSION['tipo_usuario'] != 'admin') {
    crear_notificacion("error", "No tienes acceso a esta página");
    exit;
}

$nombre = filter_input(INPUT_POST, 'nombre', FILTER_SANITIZE_SPECIAL_CHARS);
$fecha_inicio = filter_input(INPUT_POST, 'fecha_inicio', FILTER_SANITIZE_SPECIAL_CHARS);
$fecha_fin = filter_input(INPUT_POST, 'fecha_fin', FILTER_SANITIZE_SPECIAL_CHARS);

$where = [];
$params = [];

if (!empty($nombre)) {
    $where[] = "(e.nombre LIKE ? OR e.apellidos LIKE ?)";
    $params[] = "%$nombre%";
    $params[] = "%$nombre%";
}

if (!empty($fecha_inicio)) {
    $where[] = "h.fecha >= ?";
    $params[] = $fecha_inicio;
}

if (!empty($fecha_fin)) {
    $where[] = "h.fecha <= ?";
    $params[] = $fecha_fin;
}

$sql = "SELECT h.*, e.nombre, e.apellidos 
    FROM historial_horas_acumuladas_cron h 
    LEFT JOIN empleados e ON h.id_empleado = e.id";

if (!empty($where)) {
    $sql .= " WHERE " . implode(" AND ", $where);
}

$sql .= " ORDER BY h.id DESC";

$historial = consulta($sql, $params, true);

if (empty($historial)): ?>
    <section class="supercentrado">
        <p>No hay registros en el historial del sistema.</p>
    </section>
<?php else: ?>
    <section class="t-container">
        <table class="t-datos">
            <thead>
                <tr>
                    <th>Fecha</th>
                    <th>Empleado</th>
                    <th>Horas Anteriores</th>
                    <th>Diferencia</th>
                    <th>Horas Totales (Tras cambio)</th>
                </tr>
            </thead>
            <tbody>
                <?php foreach ($historial as $row): 
                    $diferencia = (float)$row['horas'];
                    $claseDiff = ($diferencia > 0) ? 'verde' : (($diferencia < 0) ? 'rojo' : '');
                    $signo = ($diferencia > 0) ? '+' : '';
                    
                    // Calcular el total resultante sumando la diferencia a la anterior
                    $total_resultante = (float)$row['horas_ant'] + $diferencia;
                ?>
                    <tr>
                        <td data-label="Fecha"><?= date('d/m/Y', strtotime($row['fecha'])) ?></td>
                        <td data-label="Empleado">
                            <b><?= $row['nombre'] . ' ' . $row['apellidos'] ?></b>
                        </td>
                        <td data-label="Horas Anteriores"><?= number_format((float)$row['horas_ant'], 2, ',', '.') ?>h</td>
                        <td data-label="Diferencia" class="<?= $claseDiff ?>"><b><?= $signo . number_format($diferencia, 2, ',', '.') ?>h</b></td>
                        <td data-label="Total Resultante"><?= number_format($total_resultante, 2, ',', '.') ?>h</td>
                    </tr>
                <?php endforeach; ?>
            </tbody>
        </table>
    </section>
<?php endif; ?>
