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

//Saber tipo de usuario
$tipo = $_SESSION['tipo_usuario'];

//Comprobar si hay búsqueda
if (isset($_POST["nombre"])) $nombre = filter_input(INPUT_POST, "nombre", FILTER_SANITIZE_SPECIAL_CHARS);
if (isset($_POST["fecha_ini"])) $fecha_ini = filter_input(INPUT_POST, "fecha_ini", FILTER_SANITIZE_SPECIAL_CHARS);
if (isset($_POST["fecha_fin"])) $fecha_fin = filter_input(INPUT_POST, "fecha_fin", FILTER_SANITIZE_SPECIAL_CHARS);
if (isset($_POST["offset"])) $offset = filter_input(INPUT_POST, "offset", FILTER_SANITIZE_NUMBER_INT);
else $offset = 0;

$limite = 100;

$mostrar_apellidos = get_config('mostrar_apellidos_tabla');

//Consulta autoconstructiva
$tabla_registros = (SISTEMA_INSPECTOR && ($tipo != 'admin' || isset($_POST['inspector']))) ? 'registros_inspector' : 'registros';
$consulta = "SELECT r.*, e.apellidos FROM $tabla_registros r LEFT JOIN empleados e ON r.id_empleado = e.id WHERE r.activo=1 AND r.fecha BETWEEN ? AND ? ";
$array[] = $fecha_ini;
$array[] = $fecha_fin;
if ($tipo == 'empleado') {
    $consulta .= 'AND r.id_empleado=? ';
    $array[] = $_SESSION['id_empleado'];
} elseif (isset($_POST["nombre"]) && !empty($nombre)) {
    if ($mostrar_apellidos) {
        $consulta .= 'AND (r.nombre LIKE ? OR e.apellidos LIKE ?) ';
        $array[] = $nombre . "%";
        $array[] = $nombre . "%";
    } else {
        $consulta .= 'AND r.nombre LIKE ? ';
        $array[] = $nombre . "%";
    }
}
$consulta .= 'ORDER BY r.fecha DESC, r.nombre LIMIT ' . ($limite + 1) . ' OFFSET ' . $offset . ';';


if (empty($res_array = consulta($consulta, $array, true))) {
    //si es administrador comprobar si tiene empleados
    if ($tipo == 'admin') {
        if (empty(consulta('SELECT id FROM empleados;', [], true))) {
            echo '
            <article id="no-hay-datos" class="flex wrap" style="width:fit-content; text-wrap: balance;">
            <h3>¡Vaya, parece que no tienes empleados! <a class="enlace blanco" href="../forms/empleado">Añadir empleado</a></h3>
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="1em" height="1em">
                <path d="M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z" />
            </svg>
        </article>
            ';
        } else no_hay_nada();
    } else no_hay_nada();
    exit;
}


//Sacar modificaciones de esas fechas para comparar en el bucle

$modificaciones = consulta(
    'SELECT amr.* FROM `aprobaciones_modificaciones_registros` AS amr
    INNER JOIN registros AS r ON r.id=amr.id_registro
    WHERE r.activo=1 AND amr.tipo!="crear" AND r.fecha BETWEEN ? AND ? GROUP BY amr.id_registro ORDER BY amr.id;',
    [$fecha_ini, $fecha_fin],
    true
);

//Calcular cuantas entradas/salidas hay para no imprimir toda la tabla
$nivel = 1;
for ($i = 0; $i < count($res_array); $i++) {
    if ($nivel != 2 && $res_array[$i]['hora3'] && $res_array[$i]['hora3'] != '00:00:00') $nivel = 2;
    if ($res_array[$i]['hora5'] && $res_array[$i]['hora5'] != '00:00:00') {
        $nivel = 3;
        break;
    }
}

// Comprobar si hay más registros
$hayMas = count($res_array) > $limite;
if ($hayMas) {
    array_pop($res_array); // Quitar el registro extra que solo usamos para detectar si hay más
}

echo "<table>";
imprEncabezadoTabla($nivel);
for ($i = 0; $i < count($res_array); $i++) {
    echo "<tr>";
    if ($tipo != 'empleado') {
        echo "<td style='text-align:start;'><section class='flex row'>";
        //SISTEMA DE NOTAS
        if (($tipo == 'admin' || $tipo == 'dev') && get_config('notas')) {
            echo '<span style="display: flex;flex-direction: column;width: 2rem;height: 1rem;">
            <button onclick="llamar_nota(' . $res_array[$i]["id"] . ')" class="btn-nota ' . (empty($res_array[$i]["nota"]) ? ' nota-agregar ' : ' nota-tooltip ') . '" title="' . (empty($res_array[$i]["nota"]) ? 'Agregar nota' : '') . '">';
            if (!empty($res_array[$i]["nota"]))
                echo '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path d="M160 544C124.7 544 96 515.3 96 480L96 160C96 124.7 124.7 96 160 96L480 96C515.3 96 544 124.7 544 160L544 373.5C544 390.5 537.3 406.8 525.3 418.8L418.7 525.3C406.7 537.3 390.4 544 373.4 544L160 544zM485.5 368L392 368C378.7 368 368 378.7 368 392L368 485.5L485.5 368z"/></svg>';
            else
                echo '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path d="M160 416C160 451.3 188.7 480 224 480L405.5 480C422.5 480 438.8 473.3 450.8 461.3L557.3 354.7C569.3 342.7 576 326.4 576 309.4L576 128C576 92.7 547.3 64 512 64L224 64C188.7 64 160 92.7 160 128L160 416zM352 176L384 176C392.8 176 400 183.2 400 192L400 240L448 240C456.8 240 464 247.2 464 256L464 288C464 296.8 456.8 304 448 304L400 304L400 352C400 360.8 392.8 368 384 368L352 368C343.2 368 336 360.8 336 352L336 304L288 304C279.2 304 272 296.8 272 288L272 256C272 247.2 279.2 240 288 240L336 240L336 192C336 183.2 343.2 176 352 176zM112 184C112 170.7 101.3 160 88 160C74.7 160 64 170.7 64 184L64 512C64 547.3 92.7 576 128 576L392 576C405.3 576 416 565.3 416 552C416 538.7 405.3 528 392 528L128 528C119.2 528 112 520.8 112 512L112 184z"/></svg>';
            echo '</button>';
            if (!empty($res_array[$i]["nota"]))
                echo '<section class="tooltip-nota">' . $res_array[$i]["nota"] . '</section>';
            echo '</span>';
        }

        $nombre_completo = $mostrar_apellidos && !empty($res_array[$i]["apellidos"])
            ? $res_array[$i]["nombre"] . " " . $res_array[$i]["apellidos"]
            : $res_array[$i]["nombre"];
        echo '<span>' . $nombre_completo . "</span></section></td>";
    }
    echo "<td>" . date("d/m/Y", strtotime($res_array[$i]["fecha"])) . "</td>";
    for ($o = 1; $o <= 6; $o++) {
        if ($o == 3 && $nivel == 1) break;
        if ($o == 5 && $nivel == 2) break;
        $hora = !empty($res_array[$i]["hora" . $o]) ? DateTime::createFromFormat('H:i:s', $res_array[$i]["hora" . $o]) : DateTime::createFromFormat('H:i:s', '00:00:00');
        //Modo inspector no comprueba las modificaciones
        $modi = (!isset($_POST['inspector'])) ? comprobar_hora_modificada($modificaciones, $res_array[$i]["id"], $hora->format('H:i:s'), $o) : false;

        if (!empty($res_array[$i]["hora" . $o]) && $res_array[$i]["hora" . $o] != "00:00:00")
            if (!comprobar_puntualidad($res_array[$i]["id_empleado"], $res_array[$i]["fecha"], $res_array[$i]["hora" . $o], $o))
                if (!empty($res_array[$i]["latitudh" . $o]))
                    //No puntual con localización
                    impr_horas_localizacion($hora->format('H:i'), false, $res_array[$i]["latitudh" . $o], $res_array[$i]["longitudh" . $o], $modi);
                else
                    //No puntual sin localización
                    impr_horas_localizacion($hora->format('H:i'), false, false, false, $modi);
            else 
                if (!empty($res_array[$i]["latitudh" . $o]))
                //Puntual con localización
                impr_horas_localizacion($hora->format('H:i'), true, $res_array[$i]["latitudh" . $o], $res_array[$i]["longitudh" . $o], $modi);
            else
                //Puntual sin localización
                impr_horas_localizacion($hora->format('H:i'), true, false, false, $modi);
        elseif (empty($res_array[$i]["hora" . $o]) && !empty($modi))
            //Ha borrado la hora a 00:00, mostrar la modificación de la anterior hora
            impr_horas_localizacion('00:00', false, false, false, $modi);
        //Sin registo ni modificación    
        else echo "<td class='td-vacio'></td>";
    }
    //Calculo de horas totales
    if ($total = calculo_horas_totales($res_array[$i]["hora1"], $res_array[$i]["hora2"], $res_array[$i]["hora3"], $res_array[$i]["hora4"], $res_array[$i]["hora5"], $res_array[$i]["hora6"]))
        echo "<td><span class='solomovil' style='margin-right:.5rem'><b>Total</b></span> " . $total . "</td>";
    else {
        echo '<td><span class="btn-circle-glass trabajando"><svg class="svg-inline--fa fa-business-time borde dorado" width="1em" height="1em"
                aria-labelledby="svg-inline--fa-title-o7nnQuqKQEwV" data-prefix="fas" data-icon="business-time"
                role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512" data-fa-i2svg="">
                <title id="svg-inline--fa-title-o7nnQuqKQEwV">El empleado está trabajando</title>
                <path fill="currentColor" d="M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7
                96 0 124.7 0 160v96H192 352h8.2c32.3-39.1 81.1-64 135.8-64c5.4 0 10.7 .2 16
                .7V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM320 352H224c-17.7
                0-32-14.3-32-32V288H0V416c0 35.3 28.7 64 64 64H360.2C335.1 449.6 320 410.5 320 368c0-5.4 .2-10.7
                .7-16l-.7 0zm320 16c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zM496
                288c8.8 0 16 7.2 16 16v48h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H496c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16
                16-16z"></path>
                </svg></span></td>';
    }

    if ($tipo != 'empleado' && $tipo != 'inspector') {
        //Enlace modificar
        if ($tipo != 'inspector' && !isset($_POST['inspector'])) {
            echo '<td><span class="btn-circle-glass">
            <button onclick="modificar_registro(' . $res_array[$i]["id"] . ')" style="background:transparent;border:none;" class="azul" title="Modificar registro">
            <svg class="svg-inline--fa fa-pen-to-square" width="1em" height="1em" aria-hidden="true" focusable="false"
            data-prefix="far" data-icon="pen-to-square" role="img" xmlns="http://www.w3.org/2000/svg"
            viewBox="0 0 512 512" data-fa-i2svg=""><path fill="currentColor" d="M373.1 24.97C401.2-3.147 446.8-3.147
            474.9 24.97L487 37.09C515.1 65.21 515.1 110.8 487 138.9L289.8 336.2C281.1 344.8 270.4 351.1 258.6 354.5L158.6
            383.1C150.2 385.5 141.2 383.1 135 376.1C128.9 370.8 126.5 361.8 128.9 353.4L157.5 253.4C160.9 241.6 167.2
            230.9 175.8 222.2L373.1 24.97zM440.1 58.91C431.6 49.54 416.4 49.54 407 58.91L377.9 88L424 134.1L453.1
            104.1C462.5 95.6 462.5 80.4 453.1 71.03L440.1 58.91zM203.7 266.6L186.9 325.1L245.4 308.3C249.4 307.2
            252.9 305.1 255.8 302.2L390.1 168L344 121.9L209.8 256.2C206.9 259.1 204.8 262.6 203.7 266.6zM200 64C213.3
            64 224 74.75 224 88C224 101.3 213.3 112 200 112H88C65.91 112 48 129.9 48 152V424C48 446.1 65.91 464 88
            464H360C382.1 464 400 446.1 400 424V312C400 298.7 410.7 288 424 288C437.3 288 448 298.7 448 312V424C448
            472.6 408.6 512 360 512H88C39.4 512 0 472.6 0 424V152C0 103.4 39.4 64 88 64H200z"></path>
            </svg></button></span>';
            if ($tipo != 'empleado' && $tipo != 'inspector')
                echo '<span class="btn-circle-glass solomovil"><button onclick="eliminar_registro(' . $res_array[$i]["id"] . ')" class="eliminar" title="Eliminar registro">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" width="1em" height="1em">
                <path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3
                32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416
                128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/>
                </svg></button></span>';

            echo '</td>';
        }
        //Sistema inspector
        if (SISTEMA_INSPECTOR && $tipo != 'inspector' && isset($_POST['inspector'])) {
            //Comprobar si hay ficha inspector
            if (empty(consulta("SELECT * FROM registros_inspector WHERE id_empleado=? AND fecha=?;", [$res_array[$i]["id_empleado"], $res_array[$i]["fecha"]], true))) {
                //si no existe copiar registro del original
                consulta(
                    "INSERT INTO registros_inspector (nombre, id_empleado, hora1, hora2, hora3, hora4, hora5, hora6, fecha) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?);",
                    [$res_array[$i]["nombre"], $res_array[$i]["id_empleado"], $res_array[$i]["hora1"], $res_array[$i]["hora2"], $res_array[$i]["hora3"], $res_array[$i]["hora4"], $res_array[$i]["hora5"], $res_array[$i]["hora6"], $res_array[$i]["fecha"]],
                    false
                );
            }
            echo '<td><span class="btn-circle-glass"><button onclick="modificar_registro_inspector(' . $res_array[$i]["id"] . ')" title="Modificar registro" style="background-color:transparent; border:none;fill:light-dark(var(--azul), white)">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">
                <path d="M224 16c-6.7 0-10.8-2.8-15.5-6.1C201.9 5.4 194 0 176 0c-30.5 0-52 43.7-66 89.4C62.7
                98.1 32 112.2 32 128c0 14.3 25 27.1 64.6 35.9c-.4 4-.6 8-.6 12.1c0 17 3.3 33.2 9.3 48H45.4C38
                224 32 230 32 237.4c0 1.7 .3 3.4 1 5l38.8 96.9C28.2 371.8 0 423.8 0 482.3C0 498.7 13.3 512 29.7
                512H418.3c16.4 0 29.7-13.3 29.7-29.7c0-58.5-28.2-110.4-71.7-143L415 242.4c.6-1.6 1-3.3
                1-5c0-7.4-6-13.4-13.4-13.4H342.7c6-14.8 9.3-31 9.3-48c0-4.1-.2-8.1-.6-12.1C391 155.1 416 142.3 416
                128c0-15.8-30.7-29.9-78-38.6C324 43.7 302.5 0 272 0c-18 0-25.9 5.4-32.5 9.9c-4.8 3.3-8.8 6.1-15.5
                6.1zm56 208H267.6c-16.5 0-31.1-10.6-36.3-26.2c-2.3-7-12.2-7-14.5 0c-5.2 15.6-19.9 26.2-36.3
                26.2H168c-22.1 0-40-17.9-40-40V169.6c28.2 4.1 61 6.4 96 6.4s67.8-2.3 96-6.4V184c0 22.1-17.9
                40-40 40zm-88 96l16 32L176 480 128 288l64 32zm128-32L272 480 240 352l16-32 64-32z"/>
                </svg></button></span></td>';
            if (ELIMINAR_REGISTROS_INSPECTOR) {
                echo '<td><span class="btn-circle-glass"><button onclick="eliminar_registro_inspector(' . $res_array[$i]["id"] . ')" class="eliminar" title="Eliminar registro del modo inspector">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" width="1em" height="1em">
                            <path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3
                            32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416
                            128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/>
                            </svg></button></span></td>';
            }
        }
        if ($tipo != 'empleado' && $tipo != 'inspector' && !isset($_POST['inspector']))
            echo '<td class="movilno"><span class="btn-circle-glass"><button onclick="eliminar_registro(' . $res_array[$i]["id"] . ')" class="eliminar" title="Eliminar registro">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" width="1em" height="1em">
                <path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3
                32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416
                128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/>
                </svg></button></span></td>';
        echo '</tr>';
    }
}
echo "</table>";

// Botón cargar más
if ($hayMas) {
    $nuevoOffset = $offset + $limite;
    echo '<section class="flex supercentrado" style="margin-top: 1rem;">';
    echo '<button class="btn-p" onclick="cargarMasRegistros(' . $nuevoOffset . ')" id="btn-cargar-mas">';
    echo '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="1em" height="1em" style="margin-right: 0.5rem;"><path fill="currentColor" d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344V280H168c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z"/></svg>';
    echo 'Cargar 100 más</button>';
    echo '</section>';
}
