<?php
require_once("../../functions.php");
$pag = basename($_SERVER['PHP_SELF']);
gen_plantilla(true, $pag, false, false, '', false, false);

/*******************************************************************************
 *                    [Imprimir campos de la Base de Datos]                    *
 ******************************************************************************/

$es_empleado = $_SESSION['tipo_usuario'] == 'empleado';
$mostrar_apellidos = get_config('mostrar_apellidos_tabla');

// Si es empleado, solo mostrar sus propias horas
if ($es_empleado) {
    $resultado = consulta("SELECT id,nombre,apellidos,horas_acu FROM empleados WHERE id=?;", [$_SESSION['id_empleado']], true);
} else {
    $where = [];
    $params = [];

    if (isset($_POST['nombre']) && !empty($_POST['nombre'])) {
        $busqueda = '%' . filter_input(INPUT_POST, 'nombre', FILTER_SANITIZE_SPECIAL_CHARS) . '%';
        $where[] = "(nombre LIKE ? OR apellidos LIKE ? OR CONCAT(nombre, ' ', apellidos) LIKE ?)";
        $params = array_merge($params, [$busqueda, $busqueda, $busqueda]);
    }

    if (isset($_POST['grupo']) && !empty($_POST['grupo'])) {
        $id_grupo = filter_input(INPUT_POST, 'grupo', FILTER_SANITIZE_NUMBER_INT);
        $where[] = "id_grupo = ?";
        $params[] = $id_grupo;
    }

    $sql = "SELECT id,nombre,apellidos,horas_acu FROM empleados";
    if (!empty($where)) {
        $sql .= " WHERE " . implode(" AND ", $where);
    }
    $sql .= " ORDER BY nombre;";
    $resultado = consulta($sql, $params, true);
}

if (empty($resultado)) {
    no_hay_nada();
    exit;
}

// Vista simplificada para empleados
if ($es_empleado) {
    $horas_decimal = (float) $resultado[0]['horas_acu'];
    $es_negativo = $horas_decimal < 0;
    $abs_horas_decimal = abs($horas_decimal);
    $signo = $es_negativo ? '-' : '';
    $horas_formateadas = $signo . number_format($abs_horas_decimal, 2, '.', '');
    $color = $es_negativo ? 'var(--rojo)' : 'var(--verde)';

    echo "<article class='flex column supercentrado gap1' style='padding:2rem;'>";
    echo "<h2 style='font-size:1.2rem;'>Tienes acumuladas</h2>";
    echo "<span style='font-size:3rem;font-weight:bold;color:" . $color . ";'>" . $horas_formateadas . "h</span>";
    if ($horas_decimal == 0) {
        echo "<p style='color:var(--gris);'>No tienes horas extras acumuladas actualmente.</p>";
    }
    echo "</article>";
    echo "<input type='hidden' id='total' value='0'>";
    exit;
}

// Vista completa para admin/inspector
echo "<input type='hidden' id='total' value='" . count($resultado) . "'>";
$entrado = false;
for ($i = 0; $i < count($resultado); $i++) {
    if (!$entrado) {
        echo "<table><thead><td>Nombre</td><td>Acumulado</td>";
        if ($_SESSION['tipo_usuario'] !== 'inspector') {
            echo "<td>Canjear</td><td>Restante</td><td>Nota</td><td>Aplicar</td>";
        }
        echo "</thead>";
    }
    $entrado = true;

    // Construir nombre con apellidos si está activada la opción
    $nombre_mostrar = $resultado[$i]["nombre"];
    if ($mostrar_apellidos && !empty($resultado[$i]["apellidos"])) {
        $nombre_mostrar .= " " . $resultado[$i]["apellidos"];
    }

    $resultado[$i]['horas_acu'] = number_format((float) $resultado[$i]['horas_acu'], 2, '.', '');
    echo "<tr>";
    echo "<td style='text-align: end;'>" . htmlspecialchars($nombre_mostrar) . "</td>";
    echo "<td><span class='flex gap1 alineado anchocompleto' style='justify-content: space-between;'><b class='solomovil'>Acumulado</b><input type='number' style='width:4rem; text-align:center; background-color:light-dark(white,var(--negro));' step='0.1' value='" . $resultado[$i]["horas_acu"] . "' name='acumulado" . $i . "' id='acumulado" . $i . "' data-id='" . $resultado[$i]["id"] . "' minvalue='0' " . ($_SESSION['tipo_usuario'] == 'inspector' ? "disabled" : "") . "></span></td>";
    
    if ($_SESSION['tipo_usuario'] !== 'inspector') {
        echo "<td><span class='flex gap1 alineado anchocompleto' style='justify-content: space-between;'><b class='solomovil'>Canjeadas</b><input type='number' style='width:4rem; text-align:center; background-color:light-dark(white,var(--negro));' step='0.1' value='0' name='pagar" . $i . "' id='pagar" . $i . "' minvalue='0'></span></td>";
        echo "<td><span class='flex gap1 alineado anchocompleto' style='justify-content: space-between;'><b class='solomovil'>Restante</b><input type='number' style='width:4rem; text-align:center;' step='0.01' value='0' name='acumuladototal" . $i . "' id='acumuladototal" . $i . "' minvalue='0' class='sololeer' readonly/></span></td>";
        echo "<td><span class='flex gap1 alineado anchocompleto' style='justify-content: space-between;'><b class='solomovil'>Nota</b><textarea name='nota" . $i . "' id='nota" . $i . "' style='min-width:4rem;max-width:12rem;min-height:2rem'></textarea></span></td>";
        echo "<td><button type='button' class='btn-p' style='font-size:1em; min-width:fit-content' onclick='aplicar_horas(`" . $i . "`,`" . $resultado[$i]["id"] . "`)'>" . "Aplicar</button></td>";
    } else {
        // Inputs ocultos para que no falle el JS
        echo "<input type='hidden' value='0' id='pagar" . $i . "'>";
        echo "<input type='hidden' value='0' id='acumuladototal" . $i . "'>";
        echo "<input type='hidden' value='' id='nota" . $i . "'>";
    }
    echo "</tr>";
}
echo "</table>";
