<?php
// concurso_nobel/includes/sidebar_concurso.php
// Sidebar visual NOBEX con colores por módulo desde concurso_menu.color_menu.

declare(strict_types=1);

require_once __DIR__ . '/menu_concurso.php';

if (!isset($menuConcurso) || !is_array($menuConcurso)) {
    $idConcursoMenu = isset($idConcursoMenu)
        ? (int)$idConcursoMenu
        : (isset($idConcurso) ? (int)$idConcurso : (int)($_SESSION['cn_concurso_id'] ?? 0));

    $menuConcurso = (isset($conn, $acceso) && $conn instanceof mysqli && is_array($acceso))
        ? cn_menu_cargar($conn, $acceso, $idConcursoMenu)
        : [];
}

$cnNombreResponsable = trim((string)($acceso['nombre_responsable'] ?? $_SESSION['cn_responsable'] ?? 'Acceso NOBEX'));
$cnTipoAcceso = trim((string)($acceso['tipo_acceso'] ?? $_SESSION['cn_tipo_acceso'] ?? ''));
$cnCodigoAcceso = trim((string)($acceso['codigo'] ?? $_SESSION['cn_codigo'] ?? ''));

function cn_sidebar_color_item(array $item, string $fallback = '#facc15'): string
{
    return cn_menu_color_seguro($item['color_menu'] ?? $fallback);
}

function cn_sidebar_render_items(array $items, string $colorPadre = '#facc15'): void
{
    foreach ($items as $item) {
        $children = $item['children'] ?? [];
        $activo = cn_menu_item_activo($item);
        $icono = trim((string)($item['icono'] ?? 'fa-solid fa-circle'));
        $titulo = (string)($item['titulo'] ?? 'Menú');
        $href = (string)($item['href'] ?? '#');
        $color = cn_sidebar_color_item($item, $colorPadre);

        if (!empty($children)) {
            ?>
            <details class="cn-menu-group" <?php echo $activo ? 'open' : ''; ?>>
                <summary class="cn-menu-parent <?php echo $activo ? 'is-active' : ''; ?>" style="--cn-item-color: <?php echo cn_menu_h($color); ?>;">
                    <span class="cn-menu-parent-left">
                        <span class="cn-menu-icon-box"><i class="<?php echo cn_menu_h($icono); ?>"></i></span>
                        <span><?php echo cn_menu_h($titulo); ?></span>
                    </span>
                    <i class="fa-solid fa-chevron-down cn-chevron"></i>
                </summary>

                <div class="cn-submenu">
                    <?php foreach ($children as $child): ?>
                        <?php
                        $childActivo = cn_menu_item_activo($child);
                        $childIcono = trim((string)($child['icono'] ?? 'fa-solid fa-angle-right'));
                        $childTitulo = (string)($child['titulo'] ?? 'Submenú');
                        $childHref = (string)($child['href'] ?? '#');
                        $childColor = cn_sidebar_color_item($child, $color);
                        ?>
                        <a class="cn-menu-link is-child <?php echo $childActivo ? 'is-active' : ''; ?>" href="<?php echo cn_menu_h($childHref); ?>" style="--cn-item-color: <?php echo cn_menu_h($childColor); ?>;">
                            <span class="cn-menu-link-left">
                                <span class="cn-menu-icon-box is-small"><i class="<?php echo cn_menu_h($childIcono); ?>"></i></span>
                                <span><?php echo cn_menu_h($childTitulo); ?></span>
                            </span>
                        </a>
                    <?php endforeach; ?>
                </div>
            </details>
            <?php
        } else {
            ?>
            <a class="cn-menu-link <?php echo $activo ? 'is-active' : ''; ?>" href="<?php echo cn_menu_h($href); ?>" style="--cn-item-color: <?php echo cn_menu_h($color); ?>;">
                <span class="cn-menu-link-left">
                    <span class="cn-menu-icon-box"><i class="<?php echo cn_menu_h($icono); ?>"></i></span>
                    <span><?php echo cn_menu_h($titulo); ?></span>
                </span>
            </a>
            <?php
        }
    }
}
?>

<button type="button" class="cn-menu-toggle" id="cnMenuToggle" aria-label="Abrir menú">
    <i class="fa-solid fa-bars"></i>
</button>

<aside class="cn-sidebar" id="cnSidebar">
    <div class="cn-sidebar-top">
        <div class="cn-sidebar-brand">
            <div class="cn-sidebar-logo">
                <i class="fa-solid fa-trophy"></i>
            </div>
            <div class="cn-brand-text">
                <strong>NOBEX</strong>
                <small>I.E.P. Nobel Ingenieros</small>
            </div>
        </div>

        <div class="cn-access-card">
            <p><?php echo cn_menu_h($cnNombreResponsable ?: 'Acceso NOBEX'); ?></p>
            <span><i class="fa-solid fa-key"></i> <?php echo cn_menu_h($cnCodigoAcceso ?: 'Código activo'); ?></span>

            <?php if ($cnTipoAcceso !== ''): ?>
                <span><i class="fa-solid fa-user-shield"></i> <?php echo cn_menu_h($cnTipoAcceso); ?></span>
            <?php endif; ?>
        </div>
    </div>

    <nav class="cn-menu-nav">
        <?php if (!empty($menuConcurso)): ?>
            <?php cn_sidebar_render_items($menuConcurso); ?>
        <?php else: ?>
            <div class="cn-menu-empty">
                <i class="fa-solid fa-circle-exclamation"></i>
                Menú no configurado.
            </div>
        <?php endif; ?>
    </nav>

    <div class="cn-sidebar-footer">
        <a href="<?php echo cn_menu_h(cn_menu_prefijo_relativo() . 'salir.php'); ?>" class="cn-logout-btn">
            <i class="fa-solid fa-right-from-bracket"></i>
            <span>Cerrar sesión</span>
        </a>
    </div>
</aside>

<div class="cn-sidebar-backdrop" id="cnSidebarBackdrop"></div>

<script>
document.addEventListener('DOMContentLoaded', function () {
    const btn = document.getElementById('cnMenuToggle');
    const backdrop = document.getElementById('cnSidebarBackdrop');

    function closeMenu() {
        document.body.classList.remove('cn-sidebar-open');
    }

    if (btn) {
        btn.addEventListener('click', function () {
            document.body.classList.toggle('cn-sidebar-open');
        });
    }

    if (backdrop) {
        backdrop.addEventListener('click', closeMenu);
    }
});
</script>
