<?php
require_once("../../app/functions.php");
$pag = basename($_SERVER['PHP_SELF']);
gen_plantilla(true, $pag, true, true, 'Festivos y vacaciones', true, true);
if (session_status() !== PHP_SESSION_ACTIVE) session_start();
$mostrar_apellidos = get_config('mostrar_apellidos_tabla');

// Fechas por defecto: primer y último día del mes actual
$fecha_desde = date('Y-m-01');
$fecha_hasta = date('Y-m-t');
?>
<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> Festivos y vacaciones</h1>
    <section class="flex row gap05 supercentrado" style="margin-bottom:1rem;">
        <?php if ($_SESSION['tipo_usuario'] == 'admin'): ?>
            <a href="../forms/festivo" class="btn-p">Agregar festivo</a>
        <?php endif; ?>
        <a href="<?= SITIO_CARPETA ?>/views/tables/festivos_calendario" class="btn-p">
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640">
                <path d="M216 64C229.3 64 240 74.7 240 88L240 128L400 128L400 88C400 74.7 410.7 64 424 64C437.3 64 448 74.7 448 88L448 128L480 128C515.3 128 544 156.7 544 192L544 480C544 515.3 515.3 544 480 544L160 544C124.7 544 96 515.3 96 480L96 192C96 156.7 124.7 128 160 128L192 128L192 88C192 74.7 202.7 64 216 64zM216 176L160 176C151.2 176 144 183.2 144 192L144 240L496 240L496 192C496 183.2 488.8 176 480 176L216 176zM144 288L144 480C144 488.8 151.2 496 160 496L480 496C488.8 496 496 488.8 496 480L496 288L144 288z" />
            </svg>
            Vista calendario
        </a>
    </section>
    
    <?php
    if (!empty($empleados_check = consulta("SELECT id FROM empleados LIMIT 1;", [], true))):
    ?>
        <!-- Filtros -->
        <article class="flex row gap1 supercentrado wrap row-column" style="margin-bottom:1rem;">
            <label class="flex column gap02"><b>Grupo</b>
                <select name="grupo" id="grupo">
                    <option value="0" selected>-TODOS-</option>
                    <?php
                    $grupos = consulta("SELECT id,nombre FROM grupos ORDER BY nombre;", [], true);
                    for ($i = 0; $i < count($grupos); $i++)
                        echo "<option value='" . $grupos[$i]["id"] . "'>" . $grupos[$i]["nombre"] . "</option>";
                    ?>
                </select>
            </label>
            <label class="flex column gap02"><b>Empleado</b>
                <input type="search" id="empleado" name="empleado" list="dataempleados" placeholder="<?= $mostrar_apellidos ? 'Nombre o apellidos' : 'Empleado' ?>">
                <datalist id="dataempleados">
                    <?php
                    $empleados = consulta(
                        "SELECT nombre, apellidos FROM empleados ORDER BY nombre;",
                        [],
                        true
                    );
                    for ($i = 0; $i < count($empleados); $i++) {
                        $nombre_completo = $mostrar_apellidos && !empty($empleados[$i]["apellidos"]) 
                            ? $empleados[$i]["nombre"] . " " . $empleados[$i]["apellidos"]
                            : $empleados[$i]["nombre"];
                        echo "<option value='" . htmlspecialchars($nombre_completo) . "'></option>";
                    }
                    ?>
                </datalist>
            </label>
            <label class="flex column gap02"><b>Desde</b>
                <input type="date" id="fecha_desde" name="fecha_desde" value="<?= $fecha_desde ?>">
            </label>
            <label class="flex column gap02"><b>Hasta</b>
                <input type="date" id="fecha_hasta" name="fecha_hasta" value="<?= $fecha_hasta ?>">
            </label>
            <section class="flex row gap05" style="align-self:flex-end;">
                <button type="button" class="btn-s" onclick="limpiarFiltros()">Limpiar</button>
            </section>
        </article>

        <aside id="cargando"></aside>
        <section id="festivos"></section>
    <?php else: ?>
        <article id="no-hay-datos" class="flex wrap" style="width:fit-content; text-wrap: balance; margin-top: 1rem;">
            <h3>¡Vaya, parece que no tienes empleados! <a class="enlace blanco" href="<?= SITIO_CARPETA ?>/views/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>
    <?php endif; ?>
</section>
<aside id="showdialog"></aside>
<script>
    window.onload = () => {
        buscar();
        document.getElementById("empleado").addEventListener("keyup", buscar);
        document.getElementById("grupo").addEventListener("change", buscar);
        document.getElementById("fecha_desde").addEventListener("change", buscar);
        document.getElementById("fecha_hasta").addEventListener("change", buscar);
    };

    function buscar() {
        poner_cargando();
        const empleado = document.getElementById("empleado").value;
        const grupo = document.getElementById("grupo").value;
        const fecha_desde = document.getElementById("fecha_desde").value;
        const fecha_hasta = document.getElementById("fecha_hasta").value;
        ajax('tables/table_festivos.php', 'festivos', 
            "empleado=" + empleado + "&grupo=" + grupo + "&fecha_desde=" + fecha_desde + "&fecha_hasta=" + fecha_hasta, 
            ['quitar_cargando()']);
    }

    function limpiarFiltros() {
        document.getElementById("empleado").value = '';
        document.getElementById("grupo").value = '0';
        document.getElementById("fecha_desde").value = '<?= $fecha_desde ?>';
        document.getElementById("fecha_hasta").value = '<?= $fecha_hasta ?>';
        buscar();
    }

    function cargar_eliminar_festivo(id) {
        ajax('dialogs/dialog_delete_festivo', 'showdialog', "id=" + id, ['cargar_dialog()']);
    }

    function eliminar_dia_inhabil(id) {
        ajax('delete/delete_festivo', 'notificaciones', "id=" + id, ['animacion_y_cierre_dialog()', 'buscar()']);
    }

    function cargar_editar_festivo(id) {
        ajax('dialogs/dialog_editar_festivo', 'showdialog', "id=" + id, ['cargar_dialog()']);
    }

    function editar_festivo(id) {
        let fecha_inicio = document.getElementById('edit_fecha_inicio').value;
        let fecha_fin = document.getElementById('edit_fecha_fin').value;
        let tipo_dia = document.getElementById('edit_tipo_dia').value;

        if (!fecha_inicio || !fecha_fin) {
            crear_notificacion('error', 'Debes seleccionar las fechas');
            return;
        }
        if (fecha_fin < fecha_inicio) {
            crear_notificacion('error', 'La fecha fin debe ser igual o posterior a la fecha inicio');
            return;
        }

        ajax('forms/editar_festivo', 'notificaciones',
            'id=' + id + '&fecha_inicio=' + fecha_inicio + '&fecha_fin=' + fecha_fin + '&tipo_dia=' + tipo_dia,
            ['animacion_y_cierre_dialog()', 'buscar()']);
    }
</script>
<?php impr_version(); ?>