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

/*******************************************************************************
 *                                 [Parámetros]                                *
 *******************************************************************************/
$grupo = filter_input(INPUT_POST, "grupo", FILTER_SANITIZE_NUMBER_INT);
$empleado = filter_input(INPUT_POST, "empleado", FILTER_SANITIZE_SPECIAL_CHARS);
$fecha_desde = filter_input(INPUT_POST, "fecha_desde", FILTER_SANITIZE_SPECIAL_CHARS);
$fecha_hasta = filter_input(INPUT_POST, "fecha_hasta", FILTER_SANITIZE_SPECIAL_CHARS);

$consulta = "SELECT di.id AS id, di.id_motivo, g.nombre AS grupo, t.nombre AS nombre_empleado,
        t.apellidos AS apellidos_empleado, di.fecha_entrada AS fecha_inicio, di.fecha_termina AS fecha_fin
        FROM dias_inhabiles AS di
        LEFT JOIN grupos AS g ON di.id_grupo = g.id
        LEFT JOIN empleados AS t ON di.id_empleado = t.id ";

$array = [];
$where_clauses = [];

// Filtro por grupo
if (!empty($grupo) && $grupo != 0) {
    $where_clauses[] = "g.id = ?";
    $array[] = $grupo;
}

// Filtro por empleado
if (!empty($empleado)) {
    $busqueda = "%" . trim($empleado) . "%";
    $where_clauses[] = "(t.nombre LIKE ? OR t.apellidos LIKE ? OR CONCAT(t.nombre, ' ', t.apellidos) LIKE ?)";
    $array[] = $busqueda;
    $array[] = $busqueda;
    $array[] = $busqueda;
}

// Filtro por fechas
if (!empty($fecha_desde)) {
    $where_clauses[] = "di.fecha_termina >= ?";
    $array[] = $fecha_desde;
}
if (!empty($fecha_hasta)) {
    $where_clauses[] = "di.fecha_entrada <= ?";
    $array[] = $fecha_hasta;
}

// Construir WHERE
if (!empty($where_clauses)) {
    $consulta .= "WHERE " . implode(" AND ", $where_clauses) . " ";
}

$consulta .= "ORDER BY di.fecha_entrada DESC;";

if (!$datos = consulta($consulta, $array, true)) {
    no_hay_nada();
    exit;
}
?>
<section class="festivos-lista">
    <?php
    for ($i = 0; $i < count($datos); $i++):
        $es_empleado = !empty($datos[$i]["nombre_empleado"]);
        $tipo_clase = $es_empleado ? 'festivo-empleado' : 'festivo-grupo';
        
        // Nombre a mostrar
        if ($es_empleado) {
            $nombre_mostrar = $datos[$i]["nombre_empleado"];
            if ($mostrar_apellidos && !empty($datos[$i]["apellidos_empleado"])) {
                $nombre_mostrar .= " " . $datos[$i]["apellidos_empleado"];
            }
            $tipo_texto = "Empleado";
            $icono = "👤";
        } else {
            $nombre_mostrar = $datos[$i]["grupo"];
            $tipo_texto = "Grupo";
            $icono = "👥";
        }
        
        // Motivo
        $motivo = "";
        if (!empty($datos[$i]["id_motivo"])) {
            $motivo_data = consulta('SELECT nombre FROM motivos WHERE id=?;', [$datos[$i]["id_motivo"]], true);
            if (!empty($motivo_data)) {
                $motivo = $motivo_data[0]['nombre'];
            }
        }
        
        // Fechas
        $fecha_ini = date('d/m/Y', strtotime($datos[$i]["fecha_inicio"]));
        $fecha_fin_val = date('d/m/Y', strtotime($datos[$i]["fecha_fin"]));
        $es_rango = $datos[$i]["fecha_inicio"] !== $datos[$i]["fecha_fin"];
    ?>
        <article class="festivo-card <?= $tipo_clase ?>">
            <div class="festivo-contenido">
                <span class="festivo-tipo"><?= $icono ?> <?= $tipo_texto ?></span>
                <span class="festivo-nombre"><?= htmlspecialchars($nombre_mostrar) ?></span>
                <span class="festivo-fechas">
                    <?php if ($es_rango): ?>
                        <?= $fecha_ini ?> → <?= $fecha_fin_val ?>
                    <?php else: ?>
                        <?= $fecha_ini ?>
                    <?php endif; ?>
                </span>
                <?php if (!empty($motivo)): ?>
                    <span class="festivo-motivo"><?= htmlspecialchars($motivo) ?></span>
                <?php endif; ?>
            </div>
            <?php if ($_SESSION['tipo_usuario'] == 'admin'): ?>
                <section class="flex row gap05">
                    <button type="button" class="festivo-editar" onclick="cargar_editar_festivo(<?= $datos[$i]['id'] ?>)" title="Modificar">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path d="M535.6 85.7C513.7 63.8 478.3 63.8 456.4 85.7L432 110.1L529.9 208L554.3 183.6C576.2 161.7 576.2 126.3 554.3 104.4L535.6 85.7zM236.4 305.7C230.3 311.8 225.6 319.3 222.9 327.6L193.3 416.4C190.4 425 192.7 434.5 199.1 441C205.5 447.5 215 449.7 223.7 446.8L312.5 417.2C320.7 414.5 328.2 409.8 334.4 403.7L496 241.9L398.1 144L236.4 305.7zM160 128C107 128 64 171 64 224L64 480C64 533 107 576 160 576L416 576C469 576 512 533 512 480L512 384C512 366.3 497.7 352 480 352C462.3 352 448 366.3 448 384L448 480C448 497.7 433.7 512 416 512L160 512C142.3 512 128 497.7 128 480L128 224C128 206.3 142.3 192 160 192L256 192C273.7 192 288 177.7 288 160C288 142.3 273.7 128 256 128L160 128z"/></svg>
                    </button>
                    <button type="button" class="festivo-eliminar" onclick="cargar_eliminar_festivo(<?= $datos[$i]['id'] ?>)" title="Eliminar">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><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>
                </section>
            <?php endif; ?>
        </article>
    <?php endfor; ?>
</section>

<style>
.festivos-lista {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.festivo-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.75rem 1rem;
    border-radius: 0.5rem;
    background: light-dark(rgba(255,255,255,0.8), rgba(30,30,30,0.8));
    border-left: 4px solid var(--azul);
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.festivo-empleado { border-left-color: var(--verde); }
.festivo-grupo { border-left-color: var(--azul); }

.festivo-contenido {
    display: flex;
    align-items: center;
    gap: 1.5rem;
    flex-wrap: wrap;
    flex: 1;
}

.festivo-tipo {
    font-size: 0.85rem;
    color: light-dark(var(--gris), #aaa);
    min-width: 6rem;
}
.festivo-empleado .festivo-tipo { color: var(--verde); }
.festivo-grupo .festivo-tipo { color: var(--azul); }

.festivo-nombre {
    font-weight: bold;
    color: light-dark(var(--negro), white);
    min-width: 8rem;
}

.festivo-fechas {
    color: var(--azul);
    font-weight: 500;
}

.festivo-motivo {
    font-size: 0.9rem;
    padding: 0.2rem 0.5rem;
    background: light-dark(#f0f0f0, #333);
    border-radius: 0.25rem;
    color: light-dark(var(--negro), white);
}

.festivo-eliminar {
    background: transparent;
    border: none;
    cursor: pointer;
    padding: 0.25rem;
    flex-shrink: 0;
}
.festivo-eliminar svg {
    width: 1.2rem;
    height: 1.2rem;
    fill: var(--rojo);
    transition: transform 0.2s;
}
.festivo-eliminar:hover svg { transform: scale(1.1); }

.festivo-editar {
    background: transparent;
    border: none;
    cursor: pointer;
    padding: 0.25rem;
    flex-shrink: 0;
}
.festivo-editar svg {
    width: 1.2rem;
    height: 1.2rem;
    fill: var(--azul);
    transition: transform 0.2s;
}
.festivo-editar:hover svg { transform: scale(1.1); }

@media (max-width: 768px) {
    .festivo-contenido { gap: 0.75rem; }
    .festivo-tipo { min-width: auto; }
    .festivo-nombre { min-width: auto; }
}
</style>