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

gen_plantilla(true, $pag, true, true, 'Inicio', true, true);
//Obtener anterior búsqueda
$fecha = date('Y-m-d');
$filtro = consulta('SELECT * FROM filtro_busqueda WHERE fecha=?;', [$fecha], true);
$nombres = consulta(
    "SELECT e.id,nombre, u.id AS id_usuario
    FROM empleados AS e
    LEFT JOIN usuarios AS u ON u.id_empleado=e.id
    ORDER BY e.nombre;",
    [],
    true
);
?>
<section class="cristal" <?= (!get_config_usuario($_SESSION['id_usuario'], 'reducir_efectos_movimiento')) ? 'style="view-transition-name: cristal;"' : '' ?>>
    <h1 class="resaltado flex row supercentrado"><span class="animacion-izq-drch">📋</span> Historial fichajes inspector
    </h1>
    <article class="flex row gap1 supercentrado wrap row-column">
        <input type="search" list="nombres" name="nombre" id="nombre" placeholder="Nombre del empleado"
            <?= (!empty($filtro)) ? "value='" . $filtro[0]['nombre'] . "'" : '' ?> <?php if ($_SESSION['tipo_usuario'] == 'empleado') {
                           echo 'style="display:none;"';
                           for ($i = 0; $i < count($nombres); $i++)
                               if ($nombres[$i]['id_usuario'] == $_SESSION['id_usuario']) {
                                   echo ' value="' . $nombres[$i]['nombre'] . '"';
                                   $nombre_empleado = $nombres[$i]['nombre'];
                                   break;
                               }
                       } ?>>
        <datalist id="nombres">
            <?php
            if (!empty($nombres))
                for ($i = 0; $i < count($nombres); $i++)
                    echo "<option value='" . $nombres[$i]["nombre"] . "'>" . $nombres[$i]["id"] . "</option>";
            if (get_config('mostrar_empleados_eliminados')) {
                $nombres_eliminados = consulta("SELECT id_empleado,nombre FROM empleados_eliminados ORDER BY nombre;", [], true);
                if (!empty($nombres_eliminados))
                    for ($i = 0; $i < count($nombres_eliminados); $i++) {
                        echo "<option value='" . $nombres_eliminados[$i]["nombre"] . "'>" . $nombres_eliminados[$i]["id_empleado"] . " (Eliminado)</option>";
                    }
            }
            ?>
        </datalist>
        <input type="date" name="fecha_ini" id="fecha_ini" <?= (!empty($filtro)) ? "value='" . $filtro[0]['fecha_inicio'] . "'" : "value='" . date("Y") . "-01-01'" ?> max="<?= date("Y-m-d") ?>">
        <input type="date" name="fecha_fin" id="fecha_fin" <?= (!empty($filtro)) ? "value='" . $filtro[0]['fecha_fin'] . "'" : "value='" . date("Y") . "-12-31'" ?>>
        <button id="borrar_filtros" class="btn-s">Borrar filtros</button>
        <a href="<?= SITIO_CARPETA ?>/views/tables/fichajes" class="btn-s" style="text-decoration:none;">← Volver a
            fichajes</a>
    </article>
    <article id="cargando"></article>
    <section id="registros"></section>
</section>
<aside id="showdialog"></aside>
<article id="notificar_guardado"></article>
<!-- Ajax-->
<script>
    window.onload = function () {
        cargar_ajax_table();
        let nombres = document.getElementById("nombre");
        let fecha_ini = document.getElementById("fecha_ini");
        let fecha_fin = document.getElementById("fecha_fin");
        let borrar_filtros = document.getElementById("borrar_filtros");
        let timeout = null;
        nombres.addEventListener("keyup", function () {
            guardar_consulta();
            cargar_ajax_table();
        });
        fecha_ini.addEventListener("change", function () {
            guardar_consulta();
            cargar_ajax_table();
        });
        fecha_fin.addEventListener("change", function () {
            guardar_consulta();
            cargar_ajax_table();
        });

        borrar_filtros.addEventListener("click", function () {
            nombres.value = '';
            let fechaActual = new Date();

            // Crea una nueva fecha con el primer día del año
            let primerDiaAño = new Date(fechaActual.getFullYear(), 0, 1);

            // Formatea la fecha en formato Y-m-d
            let formatoYMD = primerDiaAño.getFullYear() + '-' +
                ('0' + (primerDiaAño.getMonth() + 1)).slice(-2) + '-' +
                ('0' + primerDiaAño.getDate()).slice(-2);
            fecha_ini.value = formatoYMD;
            let ultimoDiaAño = new Date(fechaActual.getFullYear(), 11, 31);

            // Formatea la fecha en formato Y-m-d
            let formatoYMD2 = ultimoDiaAño.getFullYear() + '-' +
                ('0' + (ultimoDiaAño.getMonth() + 1)).slice(-2) + '-' +
                ('0' + ultimoDiaAño.getDate()).slice(-2);
            fecha_fin.value = formatoYMD2;
            guardar_consulta();
            cargar_ajax_table();
        });

        function guardar_consulta() {
            let nombre = document.getElementById('nombre');
            if (!nombre) {
                let nombre = '';
            } else {
                nombre = nombre.value
            }
            let fecha_inicio = document.getElementById('fecha_ini');
            if (!fecha_inicio.checkValidity()) return;
            fecha_inicio = fecha_inicio.value;
            let fecha_fin = document.getElementById('fecha_fin');
            if (!fecha_fin.checkValidity()) return;
            fecha_fin = fecha_fin.value;
            ajax('guardar_filtro_busqueda', 'notificar_guardado', 'nombre=' + nombre + '&fecha_inicio=' + fecha_inicio + '&fecha_fin=' + fecha_fin, []);
        }
    }

    function cargar_ajax_table() {
        poner_cargando();
        ajax('tables/table_registros', 'registros', 'nombre=' + nombre.value + '&fecha_ini=' + fecha_ini.value + '&fecha_fin=' + fecha_fin.value + '&offset=0'
            <?= (isset($_GET["id_seleccionado"])) ? '+"&id_seleccionado=' . filter_input(INPUT_GET, "id_seleccionado", FILTER_SANITIZE_NUMBER_INT) . '"' : ''; ?> + '&inspector', ['quitar_cargando()']);
    }

    function cargarMasRegistros(offset) {
        // Quitar el botón de cargar más mientras se carga
        let btnCargarMas = document.getElementById('btn-cargar-mas');
        if (btnCargarMas) {
            btnCargarMas.parentElement.innerHTML = '<span class="cargando-inline">Cargando...</span>';
        }

        let xhr = new XMLHttpRequest();
        xhr.open('POST', '<?= SITIO_CARPETA ?>/app/ajax/tables/table_registros.php', true);
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        const csrfMeta = document.querySelector('meta[name="csrf-token"]');
        let csrfTokenParam = '';
        if (csrfMeta) {
            xhr.setRequestHeader('X-CSRF-Token', csrfMeta.content);
            csrfTokenParam = '&csrf_token=' + encodeURIComponent(csrfMeta.content);
        }
        xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
        xhr.onreadystatechange = function () {
            if (xhr.readyState === 4 && xhr.status === 200) {
                // Crear un elemento temporal para parsear la respuesta
                let tempDiv = document.createElement('div');
                tempDiv.innerHTML = xhr.responseText;

                // Obtener las filas del nuevo grid (sin la cabecera)
                let nuevoGrid = tempDiv.querySelector('.grid-registros');
                if (nuevoGrid) {
                    let nuevasFilas = nuevoGrid.querySelectorAll('.fila');
                    let gridExistente = document.querySelector('#registros .grid-registros');

                    if (gridExistente) {
                        // Añadir las filas nuevas
                        for (let i = 0; i < nuevasFilas.length; i++) {
                            gridExistente.appendChild(nuevasFilas[i].cloneNode(true));
                        }
                    }
                }

                // Eliminar el contenedor del botón anterior
                let cargandoInline = document.querySelector('.cargando-inline');
                if (cargandoInline) {
                    cargandoInline.parentElement.remove();
                }

                // Añadir el nuevo botón si existe
                let nuevoBoton = tempDiv.querySelector('#btn-cargar-mas');
                if (nuevoBoton) {
                    document.querySelector('#registros').appendChild(nuevoBoton.parentElement.cloneNode(true));
                }
            }
        };
        xhr.send('nombre=' + encodeURIComponent(nombre.value) + '&fecha_ini=' + fecha_ini.value + '&fecha_fin=' + fecha_fin.value + '&offset=' + offset + '&inspector' + csrfTokenParam);
    }

    function eliminar_registro(id) {
        ajax('dialogs/dialog_delete_registro', 'showdialog', 'id=' + id + '&inspector', ['cargar_dialog()', 'cargar_eliminar("registro_inspector")']);
    }

    function eliminar_registro_inspector(id) {
        ajax('dialogs/dialog_delete_registro', 'showdialog', 'id=' + id + '&inspector', ['cargar_dialog()', 'cargar_eliminar("registro_inspector")']);
    }

    function modificar_registro_inspector(id) {
        ajax('dialogs/dialog_editar_registro', 'showdialog', 'id=' + id + '&inspector', ['cargar_dialog()', 'cargar_modificar()']);
    }

    function cargar_modificar() {
        let modificar = document.getElementById('editar-registro');
        modificar.addEventListener('click', () => {
            mandar_modificar_registro();
        });
    }

    function mandar_modificar_registro() {
        let id = document.getElementById("id").value;
        let hora1 = document.getElementById("hora1").value;
        let hora2 = document.getElementById("hora2").value;
        let hora3 = document.getElementById("hora3").value;
        let hora4 = document.getElementById("hora4").value;
        let hora5 = document.getElementById("hora5").value;
        let hora6 = document.getElementById("hora6").value;
        let hora7 = document.getElementById("hora7").value;
        let hora8 = document.getElementById("hora8").value;
        let hora9 = document.getElementById("hora9").value;
        let hora10 = document.getElementById("hora10").value;
        let data = 'inspector&id=' + id + '&hora1=' + hora1 + '&hora2=' + hora2 + '&hora3=' + hora3 + '&hora4=' + hora4 + '&hora5=' + hora5 + '&hora6=' + hora6 + '&hora7=' + hora7 + '&hora8=' + hora8 + '&hora9=' + hora9 + '&hora10=' + hora10;
        <?php if ($_SESSION['tipo_usuario'] == 'admin' && PERMITIR_OCULTAR_APROBACIONES): ?>
            let ocultar = document.getElementById('no_mostrar_aprobaciones');
            if (ocultar && ocultar.checked) {
                data += '&no_mostrar_aprobaciones=true';
            }
        <?php endif; ?>

        ajax('forms/modificar_registro', 'notificaciones', data, ['cargar_ajax_table()']);
    }
</script>
<!-- Ajax-->
<?php footer(true); ?>