<?php
session_start();
require_once __DIR__ . '/../includes/db_config.php';

// Доступ: викладач або адмін
if (!isset($_SESSION['user_id']) || !in_array($_SESSION['role'] ?? 'user', ['teacher','admin'], true)) {
    header("Location: ../login.php");
    exit;
}

// Трансліт для побудови шляху до аватара
function translit_slug(string $name): string {
    $map = [
        'А'=>'A','Б'=>'B','В'=>'V','Г'=>'H','Ґ'=>'G','Д'=>'D','Е'=>'E','Є'=>'Ye','Ж'=>'Zh','З'=>'Z','И'=>'Y','І'=>'I','Ї'=>'Yi','Й'=>'Y',
        'К'=>'K','Л'=>'L','М'=>'M','Н'=>'N','О'=>'O','П'=>'P','Р'=>'R','С'=>'S','Т'=>'T','У'=>'U','Ф'=>'F','Х'=>'Kh','Ц'=>'Ts','Ч'=>'Ch','Ш'=>'Sh','Щ'=>'Shch','Ю'=>'Yu','Я'=>'Ya',
        'а'=>'a','б'=>'b','в'=>'v','г'=>'h','ґ'=>'g','д'=>'d','е'=>'e','є'=>'ie','ж'=>'zh','з'=>'z','и'=>'y','і'=>'i','ї'=>'i','й'=>'i',
        'к'=>'k','л'=>'l','м'=>'m','н'=>'n','о'=>'o','п'=>'p','р'=>'r','с'=>'s','т'=>'t','у'=>'u','ф'=>'f','х'=>'kh','ц'=>'ts','ч'=>'ch','ш'=>'sh','щ'=>'shch','ю'=>'iu','я'=>'ia',
        'Ё'=>'Yo','ё'=>'yo','Э'=>'E','э'=>'e','Ы'=>'Y','ы'=>'y','Ъ'=>'','ъ'=>'','Ь'=>'','ь'=>''
    ];
    $s = strtr($name, $map);
    $s = preg_replace('~\s+~u', ' ', $s);
    $s = str_replace([' ', '-'], '_', trim($s));
    return preg_replace('~[^A-Za-z0-9_]+~', '', $s);
}

// Визначаємо URL аватара:
// 1) якщо у БД є avatar_path і він заповнений — використовуємо його
// 2) інакше пробуємо /img/avatars/{TranslitFullName}/avatar.png
// 3) фолбек — /img/logo.png
function resolve_avatar_url(array $user): string {
    $siteRootFs = dirname(__DIR__); // корінь проєкту

    if (array_key_exists('avatar_path', $user) && !empty($user['avatar_path'])) {
        $rel = ltrim((string)$user['avatar_path'], '/\\');
        $fs  = $siteRootFs . DIRECTORY_SEPARATOR . str_replace('/', DIRECTORY_SEPARATOR, $rel);
        if (file_exists($fs)) return '../' . $rel;
    }

    $slug = translit_slug((string)($user['full_name'] ?? ''));
    if ($slug !== '') {
        $rel = "img/avatars/{$slug}/avatar.png";
        $fs  = $siteRootFs . DIRECTORY_SEPARATOR . str_replace('/', DIRECTORY_SEPARATOR, $rel);
        if (file_exists($fs)) return '../' . $rel;
    }

    return '../img/logo.png';
}

// Чи є колонка avatar_path
$hasAvatarColumn = false;
$colSql = "SELECT COUNT(*) AS c FROM information_schema.COLUMNS
           WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME='users' AND COLUMN_NAME='avatar_path'";
if ($res = $conn->query($colSql)) {
    $row = $res->fetch_assoc();
    $hasAvatarColumn = ((int)($row['c'] ?? 0) > 0);
    $res->free();
}

$select = "id, full_name, role";
if ($hasAvatarColumn) $select .= ", avatar_path";

// Вибірка користувачів (спочатку адміни, потім викладачі)
$sql = "SELECT $select
        FROM users
        WHERE role IN ('admin','teacher') AND is_verified = 1
        ORDER BY FIELD(role,'admin','teacher'), full_name";

$users = [];
if ($result = $conn->query($sql)) {
    while ($u = $result->fetch_assoc()) {
        $u['avatar_url'] = resolve_avatar_url($u);
        $users[] = $u;
    }
    $result->free();
}
$conn->close();

/* ===== підготовка header.php ===== */
$siteName  = 'Розклад занять';
$pageTitle = 'Список викладачів';

/**
 * ВАЖЛИВО: шлях має бути від кореня сайту.
 * Файл має лежати саме тут: /css/teachers.css
 */
$pageCss   = ['/css/teachers.css?v=4'];

include __DIR__ . '/../includes/header.php';
?>

<!-- Фолбек-стилі (на випадок якщо teachers.css не підхопився) -->
<style>
  .teachers-wrap{max-width:1180px;margin:0 auto;padding:14px}
  .teachers-title{margin:6px 0 14px;font-weight:900;font-size:28px;color:var(--kp-violet)}
  .teacher-list{list-style:none;padding:0;margin:0;display:grid;gap:10px}
  .teacher-item{display:grid;grid-template-columns:56px 1fr auto;gap:12px;align-items:center;background:rgba(255,255,255,.88);border:1px solid rgba(59,31,94,.14);border-radius:16px;padding:12px}
  .avatar{width:56px;height:56px;border-radius:999px;object-fit:cover;display:block;border:1px solid rgba(59,31,94,.16);background:#fff}
  .t-name{font-weight:900;line-height:1.15}
  .t-name a{color:var(--kp-violet-2);text-decoration:none}
  .t-name a:hover{text-decoration:underline}
  .t-role{margin-top:4px;color:rgba(30,27,34,.68);font-weight:700;font-size:13px}
  .t-btn{display:inline-flex;align-items:center;justify-content:center;padding:10px 12px;border-radius:12px;background:linear-gradient(180deg, rgba(59,31,94,.92) 0%, rgba(43,18,72,.98) 100%);color:#fff;text-decoration:none;font-weight:900;border:1px solid rgba(59,31,94,.12)}
  .t-btn:hover{filter:brightness(1.03)}
  @media (max-width:576px){
    .teacher-item{grid-template-columns:56px 1fr}
    .t-btn{width:100%}
  }
</style>

<main class="page">
  <div class="kp-container">
    <div class="teachers-wrap">
      <h1 class="teachers-title">Список викладачів</h1>

      <?php if (!empty($users)): ?>
        <ul class="teacher-list">
          <?php foreach ($users as $u): ?>
            <li class="teacher-item">
              <img class="avatar" src="<?= htmlspecialchars((string)$u['avatar_url'], ENT_QUOTES, 'UTF-8') ?>" alt="avatar">

              <div class="t-main">
                <div class="t-name">
                  <a href="teacher_profile.php?id=<?= (int)$u['id'] ?>">
                    <?= htmlspecialchars((string)$u['full_name'], ENT_QUOTES, 'UTF-8') ?>
                  </a>
                </div>

                <div class="t-role">
                  <?= ($u['role'] === 'admin') ? 'Адміністратор' : 'Викладач' ?>
                </div>
              </div>

              <div class="t-action">
                <a class="t-btn" href="teacher_profile.php?id=<?= (int)$u['id'] ?>">Профіль</a>
              </div>
            </li>
          <?php endforeach; ?>
        </ul>
      <?php else: ?>
        <div class="teacher-empty">Поки що немає жодного викладача.</div>
      <?php endif; ?>
    </div>
  </div>
</main>

<?php include __DIR__ . '/../includes/footer.php'; ?>

</body>
</html>

