<?php
declare(strict_types=1);

$current = app()->auth()->user();
$path = app()->request()->path();

$dashboard = ['dashboard', 'dashboard', 'Tableau de bord'];
$menuGroups = [
    'partners' => [
        'label' => 'Tiers',
        'icon' => '👥',
        'items' => [
            ['customers', 'customers', 'Clients'],
            ['suppliers', 'suppliers', 'Fournisseurs'],
        ],
    ],
    'catalog' => [
        'label' => 'Catalogue & stock',
        'icon' => '▦',
        'items' => [
            ['products', 'products', 'Produits & services'],
            ['categories', 'catalog/categories', 'Catégories produits'],
            ['brands', 'catalog/brands', 'Marques'],
            ['units', 'catalog/units', 'Unités'],
            ['tax_rates', 'catalog/tax-rates', 'Taux de TVA'],
            ['products', 'catalog/price-levels', 'Niveaux de prix'],
            ['stock', 'stock', 'Stock'],
            ['warehouse', 'warehouses', 'Entrepôts'],
        ],
    ],
    'purchases' => [
        'label' => 'Achats',
        'icon' => '↓',
        'items' => [
            ['purchases', 'purchases', 'Achats fournisseurs'],
        ],
    ],
    'sales' => [
        'label' => 'Ventes',
        'icon' => '↑',
        'items' => [
            ['quotes', 'quotes', 'Devis clients'],
            ['orders', 'orders', 'Commandes clients'],
            ['deliveries', 'deliveries', 'Bons de livraison'],
            ['invoices', 'invoices', 'Factures clients'],
            ['payments', 'payments', 'Paiements clients'],
        ],
    ],
    'finance' => [
        'label' => 'Finance',
        'icon' => '◈',
        'items' => [
            ['checks', 'checks', 'Chèques clients'],
            ['cashboxes', 'cashboxes', 'Caisses'],
            ['bank_accounts', 'bank-accounts', 'Banques'],
            ['bank_reconciliation', 'bank-reconciliation', 'Rapprochement bancaire'],
            ['expenses', 'expenses', 'Dépenses'],
            ['reports', 'reports', 'Rapports'],
        ],
    ],
    'administration' => [
        'label' => 'Administration',
        'icon' => '⚙',
        'items' => [
            ['users', 'users', 'Utilisateurs'],
            ['roles', 'roles', 'Rôles et permissions'],
            ['activity_logs', 'activity-logs', 'Journal d’activité'],
            ['settings', 'settings', 'Paramètres'],
        ],
    ],
];

$isActive = static function (string $route) use ($path): bool {
    return $path === '/' . $route || str_starts_with($path, '/' . $route . '/');
};

$brandingStatement = app()->db()->connection()->prepare('SELECT * FROM branding_settings WHERE company_id=:company');
$brandingStatement->execute(['company' => $current['company_id']]);
$brand = $brandingStatement->fetch() ?: [];
$short = $brand['app_short_name'] ?? 'GCPro';
?>
<!doctype html>
<html lang="fr">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title><?= e($title ?? 'Gestion Commerciale') ?></title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" href="<?= e(asset('css/app.css')) ?>?v=20260807-pagination">
    <style>
        :root{--brand-primary:<?= e($brand['primary_color'] ?? '#2563eb') ?>;--brand-secondary:<?= e($brand['secondary_color'] ?? '#132238') ?>}
        .btn-primary{--bs-btn-bg:var(--brand-primary);--bs-btn-border-color:var(--brand-primary)}
        .sidebar{background:var(--brand-secondary)!important}
    </style>
</head>
<body>
<div class="app-shell">
    <aside class="sidebar" id="sidebar">
        <div class="sidebar-head">
            <div class="brand">
                <?php if (!empty($brand['logo_path'])): ?>
                    <img src="<?= e(url($brand['logo_path'])) ?>" alt="<?= e($short) ?>">
                <?php else: ?>
                    <?= e($short) ?>
                <?php endif; ?>
            </div>
            <button class="sidebar-close d-lg-none" id="sidebarClose" type="button" aria-label="Fermer le menu">×</button>
        </div>

        <nav class="sidebar-nav" aria-label="Navigation principale">
            <?php if (can($dashboard[0])): ?>
                <a class="sidebar-home <?= $isActive($dashboard[1]) ? 'active' : '' ?>" href="<?= e(url($dashboard[1])) ?>">
                    <span class="sidebar-home-icon" aria-hidden="true">⌂</span>
                    <span><?= e($dashboard[2]) ?></span>
                </a>
            <?php endif; ?>

            <?php foreach ($menuGroups as $groupId => $group): ?>
                <?php
                $visibleItems = array_values(array_filter($group['items'], static fn(array $item): bool => can($item[0])));
                if (!$visibleItems) {
                    continue;
                }
                $groupActive = false;
                foreach ($visibleItems as $item) {
                    if ($isActive($item[1])) {
                        $groupActive = true;
                        break;
                    }
                }
                $collapseId = 'sidebar-group-' . $groupId;
                ?>
                <section class="sidebar-group <?= $groupActive ? 'is-active' : '' ?>" data-sidebar-group="<?= e($groupId) ?>" data-active="<?= $groupActive ? '1' : '0' ?>">
                    <button class="sidebar-group-toggle <?= $groupActive ? '' : 'collapsed' ?>" type="button"
                            data-bs-toggle="collapse" data-bs-target="#<?= e($collapseId) ?>"
                            aria-expanded="<?= $groupActive ? 'true' : 'false' ?>" aria-controls="<?= e($collapseId) ?>">
                        <span class="sidebar-group-icon" aria-hidden="true"><?= e($group['icon']) ?></span>
                        <span class="sidebar-group-label"><?= e($group['label']) ?></span>
                        <span class="sidebar-chevron" aria-hidden="true"></span>
                    </button>
                    <div class="collapse <?= $groupActive ? 'show' : '' ?>" id="<?= e($collapseId) ?>">
                        <div class="sidebar-submenu">
                            <?php foreach ($visibleItems as [$permission, $route, $label]): ?>
                                <a class="sidebar-submenu-link <?= $isActive($route) ? 'active' : '' ?>" href="<?= e(url($route)) ?>">
                                    <span class="sidebar-submenu-dot" aria-hidden="true"></span>
                                    <span><?= e($label) ?></span>
                                </a>
                            <?php endforeach; ?>
                        </div>
                    </div>
                </section>
            <?php endforeach; ?>
        </nav>
    </aside>

    <div class="sidebar-backdrop" id="sidebarBackdrop"></div>

    <div class="main-column">
        <header class="topbar">
            <button class="btn btn-light d-lg-none" id="menuToggle" aria-label="Ouvrir le menu">☰</button>
            <div class="ms-auto dropdown">
                <button class="btn btn-light dropdown-toggle" data-bs-toggle="dropdown">
                    <strong><?= e($current['first_name'] . ' ' . $current['last_name']) ?></strong>
                    · <?= e($current['role_names'] ?: 'Sans rôle') ?>
                </button>
                <div class="dropdown-menu dropdown-menu-end">
                    <a class="dropdown-item" href="<?= e(url('profile')) ?>">Mon profil</a>
                    <div class="dropdown-divider"></div>
                    <form method="post" action="<?= e(url('logout')) ?>">
                        <?= csrf_field() ?>
                        <button class="dropdown-item text-danger">Déconnexion</button>
                    </form>
                </div>
            </div>
        </header>

        <main class="content-area">
            <div class="container-fluid py-4">
                <?php if ($message = app()->session()->pullFlash('success')): ?>
                    <div class="alert alert-success alert-dismissible fade show"><?= e($message) ?><button class="btn-close" data-bs-dismiss="alert"></button></div>
                <?php endif; ?>
                <?php if ($message = app()->session()->pullFlash('error')): ?>
                    <div class="alert alert-danger"><?= e($message) ?></div>
                <?php endif; ?>
                <?php if ($errors = app()->session()->pullFlash('errors')): ?>
                    <div class="alert alert-danger"><ul class="mb-0"><?php foreach ($errors as $error): ?><li><?= e($error) ?></li><?php endforeach; ?></ul></div>
                <?php endif; ?>
                <?= $content ?>
                <?php if (!empty($brand['footer_text'])): ?>
                    <footer class="text-center text-muted small py-4"><?= e($brand['footer_text']) ?></footer>
                <?php endif; ?>
            </div>
        </main>
    </div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<script src="<?= e(asset('js/app.js')) ?>?v=20260807-pagination-v2"></script>
</body>
</html>
