<?php
declare(strict_types=1);

/**
 * Глобальний хедер (навігація) для всіх сторінок.
 * Підсвічує активний пункт та показує пункти залежно від ролі користувача.
 * Підключайте у <body> на початку, після старту сесії.
 */

// Дані сесії (очікуємо, що session_start() вже викликано у сторінці)
$is_logged_in = isset($_SESSION['user_id']);
$user_role    = $_SESSION['role']      ?? '';
$current_file = basename($_SERVER['PHP_SELF'] ?? 'index.php');

$appConfigPath = __DIR__ . '/app_config.php';
$appConfig = is_file($appConfigPath) ? (require $appConfigPath) : [];
$brandSiteName = trim((string)($appConfig['branding']['site_name'] ?? ''));
$brandLogoPath = trim((string)($appConfig['branding']['site_logo'] ?? '/uploads/logo.png'));
$brandSubtitle = '';

if (isset($conn) && ($conn instanceof mysqli)) {
    if ($res = $conn->query("SELECT setting_name, setting_value FROM settings WHERE setting_name IN ('site_name','site_subtitle','site_logo')")) {
        while ($row = $res->fetch_assoc()) {
            $name = (string)($row['setting_name'] ?? '');
            $value = trim((string)($row['setting_value'] ?? ''));
            if ($name === 'site_name' && $value !== '') {
                $brandSiteName = $value;
            } elseif ($name === 'site_subtitle') {
                $brandSubtitle = $value;
            } elseif ($name === 'site_logo' && $value !== '') {
                $brandLogoPath = $value;
            }
        }
        $res->free();
    }
}

if ($brandSiteName === '') {
    $brandSiteName = 'Електронний журнал';
}

// Назва (можна перевизначити у сторінці: $header_title = '...';)
$header_title = $header_title ?? $brandSiteName;

/* ===== Лічильник нових повідомлень (unread) =====
   Працює, якщо на сторінці вже підключено db_connect.php і є $conn (mysqli). */
$unread_count = 0;
if ($is_logged_in && isset($conn) && ($conn instanceof mysqli)) {
    $me_id = (int)($_SESSION['user_id'] ?? 0);
    if ($me_id > 0) {
        if ($st = $conn->prepare("
            SELECT COUNT(*) AS c
            FROM private_messages
            WHERE recipient_id = ?
              AND read_at IS NULL
              AND is_deleted_recipient = 0
        ")) {
            $st->bind_param('i', $me_id);
            $st->execute();
            $res = $st->get_result();
            if ($res && ($row = $res->fetch_assoc())) {
                $unread_count = (int)($row['c'] ?? 0);
            }
            $st->close();
        }
    }
}
?>
<!-- ===== Хедер/навігація ===== -->
<style>
  :root{
      /* ===== Фірмові кольори КПКІТП (з макетів) ===== */
      --brand-mint: #a3e8d3;
      --brand-mint-2:#92dec7;
      --brand-purple:#432755;
      --brand-purple-2:#3a244d;

      /* UI */
      --ink:#1f2937;
      --muted:#4b5563;
      --card:#ffffff;
      --border: rgba(0,0,0,.10);
      --shadow: 0 10px 24px rgba(0,0,0,.08);

      /* Нав-кнопки */
      --chip-bg: var(--brand-purple);
      --chip-bg-hover: var(--brand-purple-2);
      --chip-text: #ffffff;

      --chip-active-bg: rgba(255,255,255,.92);
      --chip-active-text: var(--brand-purple);
      --chip-active-border: rgba(67,39,85,.22);
  }

  .topbar{
      background: var(--brand-mint);
      border-bottom: 1px solid rgba(67,39,85,.12);
      box-shadow: inset 0 -1px 0 rgba(255,255,255,.25);
  }

  .topbar__inner{
      padding: 12px 16px;
      display: flex;
      align-items: center;
      gap: 14px;
      justify-content: space-between;
      max-width: 1280px;
      margin: 0 auto;
  }

  /* ===== Brand block ===== */
  .brand{
      display:flex;
      align-items:center;
      gap:12px;
      min-width: 220px;
  }
  .brand__link{
      display:flex;
      align-items:center;
      gap:12px;
      text-decoration:none;
      color: var(--ink);
  }
  .brand__logo{
      width: 46px;
      height: 46px;
      border-radius: 12px;
      background: rgba(255,255,255,.55);
      border: 1px solid rgba(67,39,85,.12);
      display:flex;
      align-items:center;
      justify-content:center;
      box-shadow: 0 6px 14px rgba(0,0,0,.08);
      overflow:hidden;
      flex: 0 0 auto;
  }
  .brand__logo img{
      width: 100%;
      height: 100%;
      object-fit: cover;
      display:block;
  }
  .brand__text{
      display:flex;
      flex-direction:column;
      line-height:1.1;
  }
  .brand__title{
      font-weight: 900;
      letter-spacing: .2px;
      font-size: 16px;
      color: var(--brand-purple);
      white-space: nowrap;
  }
  .brand__subtitle{
      font-size: 12px;
      color: rgba(31,41,55,.75);
      font-weight: 700;
      white-space: nowrap;
  }

  /* ===== Nav ===== */
  .nav{
      display:flex;
      flex-wrap:wrap;
      gap:10px;
      align-items:center;
      justify-content:flex-end;
  }
  .nav a{
      display:inline-flex;
      align-items:center;
      justify-content:center;
      gap:8px;
      padding: 10px 18px;
      border-radius: 9999px;
      background: var(--chip-bg);
      color: var(--chip-text);
      text-decoration:none;
      font-weight: 900;
      font-size: 15px;
      line-height: 1;
      border: 1px solid rgba(255,255,255,.14);
      box-shadow: 0 8px 16px rgba(67,39,85,.14);
      transition: background .15s ease, transform .05s ease, box-shadow .15s ease;
      white-space: nowrap;
  }
  .nav a:hover{
      background: var(--chip-bg-hover);
      box-shadow: 0 10px 20px rgba(67,39,85,.18);
  }
  .nav a:active{
      transform: translateY(1px);
  }
  .nav a.active{
      background: var(--chip-active-bg);
      color: var(--chip-active-text);
      border: 1px solid var(--chip-active-border);
      box-shadow: 0 10px 22px rgba(0,0,0,.10);
  }
  .nav a.active:hover{
      background: rgba(255,255,255,.98);
  }

  /* ===== Badge unread ===== */
  .badge-unread{
      display:inline-flex;
      align-items:center;
      justify-content:center;
      min-width:22px;
      height:22px;
      padding:0 7px;
      border-radius:999px;
      font-size:12px;
      font-weight:1000;
      color:#fff;
      background:#dc2626;
      border:1px solid rgba(255,255,255,.25);
      box-shadow: 0 10px 18px rgba(220,38,38,.20);
      line-height:1;
  }

  /* ===== Mobile ===== */
  @media (max-width: 900px){
    .topbar__inner{
        gap: 10px;
        align-items: flex-start;
        flex-direction: column;
    }
    .brand{
        min-width: 0;
    }
    .nav{
        width: 100%;
        justify-content: flex-start;
    }
  }

  @media (max-width: 600px){
    .topbar__inner{ padding: 10px 12px; }
    .brand__logo{ width: 42px; height: 42px; border-radius: 12px; }
    .brand__title{ font-size: 15px; }
    .brand__subtitle{ display:none; }
    .nav{ gap: 8px; }
    .nav a{ padding: 10px 14px; font-size: 14px; }
  }
</style>

<header class="topbar">
  <div class="topbar__inner">

    <div class="brand">
      <a class="brand__link" href="/index.php" aria-label="На головну">
        <div class="brand__logo">
          <img src="<?= htmlspecialchars((string)$brandLogoPath, ENT_QUOTES, 'UTF-8') ?>" alt="<?= htmlspecialchars((string)$brandSiteName, ENT_QUOTES, 'UTF-8') ?>">
        </div>
        <div class="brand__text">
          <div class="brand__title"><?= htmlspecialchars((string)$header_title, ENT_QUOTES, 'UTF-8') ?></div>
          <div class="brand__subtitle"><?= htmlspecialchars((string)$brandSubtitle, ENT_QUOTES, 'UTF-8') ?></div>
        </div>
      </a>
    </div>

    <nav class="nav" aria-label="Головна навігація">
      <a href="/index.php" class="<?= $current_file==='index.php'?'active':''; ?>">Головна</a>

      <?php if ($is_logged_in): ?>
        <a href="/dz/dz.php" class="<?= in_array($current_file, ['dz.php','view.php'], true) ? 'active' : ''; ?>">Домашнє завдання</a>
      <?php endif; ?>

      <?php if ($is_logged_in && in_array($user_role, ['admin','teacher'], true)): ?>
        <a href="/admin/dz/index.php" class="<?= ($current_file==='index.php' && (strpos($_SERVER['REQUEST_URI'] ?? '', '/admin/dz/') !== false)) ? 'active' : ''; ?>">Д/з (адмін)</a>
      <?php endif; ?>

      <?php if ($is_logged_in && $user_role === 'admin'): ?>
        <a href="/admin/dashboard.php" class="<?= $current_file==='dashboard.php'?'active':''; ?>">Адмінпанель</a>

        <a href="/messages.php" class="<?= $current_file==='messages.php'?'active':''; ?>">
          Повідомлення
          <?php if ($unread_count > 0): ?><span class="badge-unread">+<?= (int)$unread_count ?></span><?php endif; ?>
        </a>

        <a href="/logout.php">Вихід</a>

      <?php elseif ($is_logged_in && $user_role === 'teacher'): ?>
        <a href="/admin/teacher_profile.php" class="<?= $current_file==='teacher_profile.php'?'active':''; ?>">Мій профіль</a>

        <a href="/messages.php" class="<?= $current_file==='messages.php'?'active':''; ?>">
          Повідомлення
          <?php if ($unread_count > 0): ?><span class="badge-unread">+<?= (int)$unread_count ?></span><?php endif; ?>
        </a>

        <a href="/admin/admin_father.php" class="<?= $current_file==='admin_father.php'?'active':''; ?>">Батьки</a>
        <a href="/logout.php">Вихід</a>

      <?php elseif ($is_logged_in && $user_role === 'student'): ?>
        <a href="/messages.php" class="<?= $current_file==='messages.php'?'active':''; ?>">
          Повідомлення
          <?php if ($unread_count > 0): ?><span class="badge-unread">+<?= (int)$unread_count ?></span><?php endif; ?>
        </a>
        <a href="/logout.php">Вихід</a>

      <?php elseif ($is_logged_in && $user_role === 'parent'): ?>
        <a href="/journal/father_journal.php" class="<?= $current_file==='father_journal.php'?'active':''; ?>">Щоденник дитини</a>

        <a href="/messages.php" class="<?= $current_file==='messages.php'?'active':''; ?>">
          Повідомлення
          <?php if ($unread_count > 0): ?><span class="badge-unread">+<?= (int)$unread_count ?></span><?php endif; ?>
        </a>

        <a href="/logout.php">Вихід</a>
      <?php endif; ?>
    </nav>

  </div>
</header>