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

/* ===== Безпечний екранер ===== */
function h(?string $s): string {
    return htmlspecialchars((string)$s, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
}

// Перевірка авторизації та ролі
if (!isset($_SESSION['user_id']) || ($_SESSION['role'] ?? '') !== 'admin') {
    header("Location: ../index.php");
    exit();
}

// Поточний файл для підсвітки меню у header.php
$current_file = basename($_SERVER['PHP_SELF'] ?? 'edit_user.php');

// ===== CSRF =====
if (empty($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
$CSRF = $_SESSION['csrf_token'];

/**
 * Визначення сторінки повернення (dashboard / admin_students)
 */
function detect_redirect_target(): string {
    $default = 'dashboard.php';
    $allow   = ['dashboard.php', 'admin_students.php'];

    $ref = $_SERVER['HTTP_REFERER'] ?? '';
    if ($ref) {
        $parts = parse_url($ref);
        $path  = $parts['path'] ?? '';
        $query = isset($parts['query']) ? ('?' . $parts['query']) : '';

        $base = basename($path);
        if (in_array($base, $allow, true)) {
            return $base . $query;
        }
    }
    return $default;
}

// Отримання ID користувача для редагування
$user_id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
if ($user_id <= 0) {
    http_response_code(400);
    die("Невірний ідентифікатор користувача!");
}

// Отримання даних користувача (з child_id для батьків)
$query = "SELECT u.id, u.full_name, u.email, u.role, u.group_id, u.child_id, g.group_name
          FROM users u
          LEFT JOIN `groups` g ON u.group_id = g.id
          WHERE u.id = ?";
$stmt = $conn->prepare($query);
$stmt->bind_param("i", $user_id);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows == 0) {
    http_response_code(404);
    die("Користувача не знайдено!");
}
$user = $result->fetch_assoc();
$stmt->close();

/* ===== Якщо роль parent і child_id порожній, але є parent_links — підтягнемо першу прив’язку (для відображення в формі) ===== */
if (($user['role'] ?? '') === 'parent' && empty($user['child_id'])) {
    $pl_child = null;
    if ($stPL = $conn->prepare("SELECT student_id FROM parent_links WHERE parent_id = ? ORDER BY student_id ASC LIMIT 1")) {
        $pid = (int)$user['id'];
        $stPL->bind_param("i", $pid);
        $stPL->execute();
        $rPL = $stPL->get_result();
        if ($rPL && ($rowPL = $rPL->fetch_assoc())) {
            $pl_child = (int)$rowPL['student_id'];
        }
        $stPL->close();
    }

    if ($pl_child && $pl_child > 0) {
        $user['child_id'] = $pl_child;

        // якщо group_id не заданий — підтягнемо групу дитини
        if (empty($user['group_id'])) {
            if ($stCG = $conn->prepare("SELECT group_id FROM users WHERE id = ? AND role='student' LIMIT 1")) {
                $stCG->bind_param("i", $pl_child);
                $stCG->execute();
                $rCG = $stCG->get_result();
                if ($rCG && ($rowCG = $rCG->fetch_assoc())) {
                    $user['group_id'] = $rowCG['group_id'] ?? null;
                }
                $stCG->close();
            }
        }
    }
}

$error = '';
$success = '';

// Ціль редіректу
$redirect_to = $_POST['redirect_to'] ?? detect_redirect_target();

/* ===== Активний пункт для вкладок — підсвічуємо по сторінці повернення ===== */
$nav_active_base = 'dashboard.php';
if ($redirect_to) {
    $p = parse_url($redirect_to);
    $nav_active_base = basename($p['path'] ?? $redirect_to);
    if ($nav_active_base === '') $nav_active_base = 'dashboard.php';
}

/* ===== Всі групи (для селектів) ===== */
$all_groups = [];
if ($resG = $conn->query("SELECT id, group_name, course FROM `groups` ORDER BY course ASC, group_name ASC")) {
    while ($g = $resG->fetch_assoc()) {
        $all_groups[] = $g;
    }
    $resG->free();
}

/* ===== Групи, де користувач є класним керівником (groups.class_teacher_id = user_id) ===== */
$selected_class_groups = [];
if ($stCT = $conn->prepare("SELECT id FROM `groups` WHERE class_teacher_id = ? ORDER BY course ASC, group_name ASC")) {
    $uid = (int)$user['id'];
    $stCT->bind_param("i", $uid);
    $stCT->execute();
    $rCT = $stCT->get_result();
    while ($row = $rCT->fetch_assoc()) {
        $selected_class_groups[] = (int)$row['id'];
    }
    $stCT->close();
}
$selected_class_groups = array_values(array_unique($selected_class_groups));

// Обробка оновлення даних
if ($_SERVER['REQUEST_METHOD'] === 'POST') {

    // Перевірка CSRF
    if (!hash_equals($CSRF, $_POST['csrf_token'] ?? '')) {
        $error = "Помилка безпеки (CSRF). Оновіть сторінку.";
    } else {
        $full_name = trim($_POST['full_name'] ?? '');
        $email     = trim($_POST['email'] ?? '');
        $role      = (string)($_POST['role'] ?? '');

        $allowed_roles = ['admin','teacher','student','parent'];
        if (!in_array($role, $allowed_roles, true)) {
            $error = "Невірна роль.";
        } else {

            // group_id: для учня і для батьків (група дитини)
            $group_id = (in_array($role, ['student','parent'], true) && isset($_POST['group_id']) && $_POST['group_id'] !== '')
                ? (int)$_POST['group_id']
                : null;

            // child_id: тільки для батьків
            $child_id = ($role === 'parent' && isset($_POST['child_id']) && $_POST['child_id'] !== '')
                ? (int)$_POST['child_id']
                : null;

            // class_teacher_groups: тільки для викладача
            $class_teacher_groups = [];
            if ($role === 'teacher') {
                $raw = $_POST['class_teacher_groups'] ?? [];
                if (!is_array($raw)) $raw = [];
                foreach ($raw as $v) {
                    $id = (int)$v;
                    if ($id > 0) $class_teacher_groups[] = $id;
                }
                $class_teacher_groups = array_values(array_unique($class_teacher_groups));
            }

            if ($full_name === '' || $email === '') {
                $error = "ПІБ і email є обов'язковими!";
            } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
                $error = "Невірний формат email!";
            } else {

                /* ===== Валідація дитини для parent + синхронізація group_id з групою дитини ===== */
                if ($role === 'parent' && $child_id !== null) {
                    $child_group_from_db = null;

                    if ($stCh = $conn->prepare("SELECT group_id FROM users WHERE id = ? AND role='student' LIMIT 1")) {
                        $stCh->bind_param("i", $child_id);
                        $stCh->execute();
                        $rCh = $stCh->get_result();
                        if ($rCh && ($rowCh = $rCh->fetch_assoc())) {
                            $child_group_from_db = $rowCh['group_id'] ?? null;
                        }
                        $stCh->close();
                    }

                    if ($child_group_from_db === null) {
                        $error = "Обрана дитина не знайдена або не є учнем.";
                    } else {
                        // Приводимо group_id батьків до group_id дитини (щоб не було розсинхрону)
                        $group_id = (int)$child_group_from_db;
                    }
                }

                if ($error === '') {
                    // Перевірка унікальності email
                    $check_email_query = "SELECT id FROM `users` WHERE email = ? AND id != ?";
                    $check_email_stmt  = $conn->prepare($check_email_query);
                    $check_email_stmt->bind_param("si", $email, $user_id);
                    $check_email_stmt->execute();
                    $exists = $check_email_stmt->get_result()->num_rows > 0;
                    $check_email_stmt->close();

                    if ($exists) {
                        $error = "Цей email вже використовується іншим користувачем!";
                    } else {
                        // Оновлення users (group_id/child_id залежать від ролі)
                        if ($role === 'student') {
                            // Учень: group_id можна задати, child_id завжди NULL
                            if ($group_id === null) {
                                $update_sql = "UPDATE `users`
                                               SET full_name = ?, email = ?, role = ?, group_id = NULL, child_id = NULL
                                               WHERE id = ?";
                                $stmt = $conn->prepare($update_sql);
                                $stmt->bind_param("sssi", $full_name, $email, $role, $user_id);
                            } else {
                                $update_sql = "UPDATE `users`
                                               SET full_name = ?, email = ?, role = ?, group_id = ?, child_id = NULL
                                               WHERE id = ?";
                                $stmt = $conn->prepare($update_sql);
                                $stmt->bind_param("sssii", $full_name, $email, $role, $group_id, $user_id);
                            }
                        } elseif ($role === 'parent') {
                            // Батьки: можна змінювати групу та дитину
                            if ($group_id === null && $child_id === null) {
                                $update_sql = "UPDATE `users`
                                               SET full_name = ?, email = ?, role = ?, group_id = NULL, child_id = NULL
                                               WHERE id = ?";
                                $stmt = $conn->prepare($update_sql);
                                $stmt->bind_param("sssi", $full_name, $email, $role, $user_id);
                            } elseif ($group_id === null) {
                                $update_sql = "UPDATE `users`
                                               SET full_name = ?, email = ?, role = ?, group_id = NULL, child_id = ?
                                               WHERE id = ?";
                                $stmt = $conn->prepare($update_sql);
                                $stmt->bind_param("sssii", $full_name, $email, $role, $child_id, $user_id);
                            } elseif ($child_id === null) {
                                $update_sql = "UPDATE `users`
                                               SET full_name = ?, email = ?, role = ?, group_id = ?, child_id = NULL
                                               WHERE id = ?";
                                $stmt = $conn->prepare($update_sql);
                                $stmt->bind_param("sssii", $full_name, $email, $role, $group_id, $user_id);
                            } else {
                                $update_sql = "UPDATE `users`
                                               SET full_name = ?, email = ?, role = ?, group_id = ?, child_id = ?
                                               WHERE id = ?";
                                $stmt = $conn->prepare($update_sql);
                                $stmt->bind_param("sssiii", $full_name, $email, $role, $group_id, $child_id, $user_id);
                            }
                        } else {
                            // Адмін/викладач/інші: без group_id та без child_id
                            $update_sql = "UPDATE `users`
                                           SET full_name = ?, email = ?, role = ?, group_id = NULL, child_id = NULL
                                           WHERE id = ?";
                            $stmt = $conn->prepare($update_sql);
                            $stmt->bind_param("sssi", $full_name, $email, $role, $user_id);
                        }

                        if ($stmt->execute()) {

                            /* ===== БАТЬКИ: синхронізація parent_links ===== */
                            if ($stPLDel = $conn->prepare("DELETE FROM parent_links WHERE parent_id = ?")) {
                                $pid = (int)$user_id;
                                $stPLDel->bind_param("i", $pid);
                                $stPLDel->execute();
                                $stPLDel->close();
                            }

                            if ($role === 'parent' && $child_id !== null) {
                                if ($stPLIns = $conn->prepare("INSERT INTO parent_links (parent_id, student_id) VALUES (?, ?)")) {
                                    $pid = (int)$user_id;
                                    $sid = (int)$child_id;
                                    $stPLIns->bind_param("ii", $pid, $sid);
                                    $stPLIns->execute();
                                    $stPLIns->close();
                                }
                            }

                            /* ===== Класний керівник: синхронізація groups.class_teacher_id ===== */
                            $tid = (int)$user_id;

                            // зняти з усіх груп
                            if ($stClear = $conn->prepare("UPDATE `groups` SET class_teacher_id = NULL WHERE class_teacher_id = ?")) {
                                $stClear->bind_param("i", $tid);
                                $stClear->execute();
                                $stClear->close();
                            }

                            if ($role === 'teacher' && !empty($class_teacher_groups)) {
                                $placeholders = implode(',', array_fill(0, count($class_teacher_groups), '?'));
                                $types = 'i' . str_repeat('i', count($class_teacher_groups)); // teacher_id + group ids
                                $sqlAssign = "UPDATE `groups` SET class_teacher_id = ? WHERE id IN ($placeholders)";
                                if ($stAssign = $conn->prepare($sqlAssign)) {
                                    $params = [];
                                    $params[] = &$types;
                                    $params[] = &$tid;
                                    foreach ($class_teacher_groups as $k => $gid) {
                                        $class_teacher_groups[$k] = (int)$gid;
                                        $params[] = &$class_teacher_groups[$k];
                                    }
                                    call_user_func_array([$stAssign, 'bind_param'], $params);
                                    $stAssign->execute();
                                    $stAssign->close();
                                }
                            }

                            // Безпечно дозволяємо редірект лише на whitelist файли
                            $whitelist = ['dashboard.php', 'admin_students.php'];
                            $target    = 'dashboard.php';
                            if ($redirect_to) {
                                $p    = parse_url($redirect_to);
                                $base = basename($p['path'] ?? $redirect_to);
                                $q    = isset($p['query']) ? ('?' . $p['query']) : '';
                                if (in_array($base, $whitelist, true)) {
                                    $target = $base . $q;
                                }
                            }
                            header("Location: " . $target);
                            exit();
                        } else {
                            $error = "Помилка оновлення: " . h($conn->error);
                        }
                        $stmt->close();
                    }
                }
            }

            // Повертаємо значення у форму, якщо була помилка
            $user['full_name'] = $full_name;
            $user['email']     = $email;
            $user['role']      = $role;
            $user['group_id']  = $group_id;
            $user['child_id']  = $child_id;

            // Повертаємо мультивибір груп класного керівника (для рендера)
            if ($role === 'teacher') {
                $selected_class_groups = $class_teacher_groups;
            } else {
                $selected_class_groups = [];
            }
        }
    }
}
?>
<!DOCTYPE html>
<html lang="uk">
<head>
    <meta charset="UTF-8">
    <title>Редагувати користувача</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
    <link rel="stylesheet" href="../assets/css/style.css">
    <style>
        :root{
            /* палітра КПКІТП (фіолетовий + м’ятний) */
            --mint: #a0e0d0;
            --mint-2:#d9f6ef;
            --plum:#402050;
            --plum-2:#2f173b;

            --bg: var(--mint);
            --card: rgba(255,255,255,.92);
            --text:#2a0f3e;
            --muted: rgba(42,15,62,.72);

            --brand: var(--plum);
            --brand-hover: var(--plum-2);

            --danger:#b42318;
            --danger-br:#f9c6c6;
        }
        *{box-sizing:border-box}
        html,body{height:100%}
        body{
            margin:0;
            font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,"Noto Sans","Helvetica Neue",Arial,"Apple Color Emoji","Segoe UI Emoji";
            color:var(--text);
            background:
                radial-gradient(1200px 600px at 10% -10%, rgba(255,255,255,.55), rgba(255,255,255,0) 60%),
                radial-gradient(900px 520px at 110% 10%, rgba(64,32,80,.12), rgba(64,32,80,0) 55%),
                linear-gradient(180deg, var(--mint) 0%, #c9f2e9 55%, #eefbf8 100%);
        }

        .container{ width:100%; max-width:880px; padding:16px; margin:0 auto; }
        .card{
            background:var(--card);
            border-radius:var(--radius);
            box-shadow:var(--shadow);
            padding:18px;
            border:1px solid var(--border);
            backdrop-filter: blur(6px);
        }
        .card h1{ font-size:22px; margin:0 0 12px; text-align:center; }
        .lead{ color:var(--muted); font-size:14px; text-align:center; margin:0 0 12px; }

        /* ===== Tabs (як у admin/dashboard.php) ===== */
        .admin-tabs{
            display:flex;
            gap:10px;
            flex-wrap:wrap;
            align-items:center;
            justify-content:center;
            margin: 2px 0 14px;
        }
        .admin-tabs a{
            display:inline-flex;
            align-items:center;
            justify-content:center;
            gap:8px;
            padding:10px 14px;
            border-radius:999px;
            text-decoration:none;
            font-weight:900;
            font-size:14px;
            color: var(--text);
            background: rgba(67,40,85,.08);
            border: 1px solid rgba(67,40,85,.18);
            box-shadow: 0 10px 22px rgba(67,40,85,.08);
            transition: transform .08s ease, box-shadow .12s ease, background .12s ease, border-color .12s ease;
        }
        .admin-tabs a:hover{
            transform: translateY(-1px);
            background: rgba(160,232,208,.45);
            border-color: rgba(67,40,85,.22);
            box-shadow: 0 14px 28px rgba(67,40,85,.10);
        }
        .admin-tabs a.active{
            color:#fff;
            background: linear-gradient(135deg, var(--plum) 0%, #4b2a61 55%, rgba(160,232,208,.95) 120%);
            border-color: rgba(255,255,255,.22);
            box-shadow: 0 18px 40px rgba(67,40,85,.18);
        }

        .alert{ border-radius:12px; padding:10px 12px; margin:8px 0 14px; font-size:14px; }
        .alert.error{background:#fde8e8; color:var(--danger); border:1px solid var(--danger-br);}
        .alert.success{background:rgba(217,246,239,.85); color:#065f46; border:1px solid rgba(22,163,74,.25);}

        form{display:grid; gap:12px}
        .form-group{display:grid; gap:6px}
        label{font-size:14px; color:var(--text); font-weight:800}
        input[type="text"], input[type="email"], select{
            width:100%;
            padding:12px 14px;
            border:1px solid rgba(64,32,80,.18);
            border-radius:12px;
            background:rgba(255,255,255,.92);
            font-size:16px;
            color:var(--text);
        }
        input:focus, select:focus{
            outline:none;
            border-color: rgba(64,32,80,.38);
            box-shadow:0 0 0 3px rgba(64,32,80,.12);
        }
        .btn{
            width:100%;
            padding:14px 16px;
            border:0;
            border-radius:14px;
            background:var(--brand);
            color:var(--mint-2);
            font-weight:900;
            font-size:16px;
            cursor:pointer;
        }
        .btn:hover{ background:var(--brand-hover); }
        .link-back{
            display:block;
            text-align:center;
            margin-top:10px;
            text-decoration:none;
            color:var(--brand);
            font-weight:800;
        }
        .link-back:hover{ text-decoration:underline; }

        .hint{font-size:13px;color:var(--muted);margin:0}

        /* ВАЖЛИВО: примусово ховаємо умовні блоки через display (бо hidden міг бути перебитий у style.css) */
        .role-block{display:none}

        @media (min-width: 768px){
            .card{padding:22px;}
            .card h1{font-size:24px}
            form{gap:14px}
        }
    </style>
    <script>
        function updateVisibility() {
            const roleSelect  = document.getElementById('role');

            const groupField  = document.getElementById('group_field');
            const childField  = document.getElementById('child_field');
            const classField  = document.getElementById('class_teacher_field');

            const groupSelect = document.getElementById('group_id');
            const childSelect = document.getElementById('child_id');
            const classSelect = document.getElementById('class_teacher_groups');

            if (!roleSelect) return;

            const role = roleSelect.value || '';

            const show = (el) => { if (el) el.style.display = 'grid'; };
            const hide = (el) => { if (el) el.style.display = 'none'; };

            // Спочатку ховаємо все умовне
            hide(groupField);
            hide(childField);
            hide(classField);

            // Скидаємо значення (щоб не зберігались “чужі” поля)
            if (role !== 'student' && role !== 'parent') {
                if (groupSelect) groupSelect.value = '';
            }
            if (role !== 'parent') {
                if (childSelect) childSelect.value = '';
            }
            if (role !== 'teacher') {
                if (classSelect) {
                    for (const opt of classSelect.options) opt.selected = false;
                }
            }

            // Показуємо потрібне
            if (role === 'student') {
                show(groupField);
            } else if (role === 'parent') {
                show(groupField);
                show(childField);
            } else if (role === 'teacher') {
                show(classField);
            }

            // Фільтрація учнів за групою (тільки для батьків)
            if (childSelect) {
                const groupId = groupSelect ? (groupSelect.value || '') : '';
                for (const opt of childSelect.options) {
                    if (!opt.value) { opt.hidden = false; continue; } // "Не вказано"
                    const childGroupId = opt.dataset.groupId || '';
                    if (role === 'parent' && groupId) {
                        opt.hidden = (childGroupId !== groupId);
                    } else {
                        opt.hidden = true;
                    }
                }
                const selectedOption = childSelect.options[childSelect.selectedIndex];
                if (selectedOption && selectedOption.hidden) childSelect.value = '';
            }
        }

        window.addEventListener('DOMContentLoaded', function(){
            const roleSelect = document.getElementById('role');
            const groupSelect = document.getElementById('group_id');

            if (roleSelect) roleSelect.addEventListener('change', updateVisibility);
            if (groupSelect) groupSelect.addEventListener('change', updateVisibility);

            updateVisibility();
        });
    </script>
</head>
<body>

<?php require __DIR__ . '/../includes/header.php'; ?>

<main class="container">

    <?php
    $tabs = [
        ['href' => 'dashboard.php',        'label' => 'Журнали'],
        ['href' => '../journal/group_journal.php', 'label' => 'Управління журналами'],
        ['href' => 'dz/index.php',         'label' => 'Домашнє завдання'],
        ['href' => 'admin_students.php',   'label' => 'Учні'],
        ['href' => 'admin_father.php',     'label' => 'Батьки'],
        ['href' => 'admin_teachers.php',   'label' => 'Вчителі'],
        ['href' => 'admin_system.php',     'label' => 'Система'],
    ];
    ?>
    <nav class="admin-tabs" aria-label="Адмін навігація">
        <?php foreach ($tabs as $t):
            $href = (string)($t['href'] ?? '');
            $label = (string)($t['label'] ?? '');
            $active = (basename($href) === $nav_active_base) ? 'active' : '';
        ?>
            <a class="<?= h($active) ?>" href="<?= h($href) ?>"><?= h($label) ?></a>
        <?php endforeach; ?>
    </nav>

    <section class="card">
        <h1>Редагувати користувача</h1>
        <p class="lead">ID: <?php echo (int)$user['id']; ?></p>

        <?php if (!empty($error)): ?>
            <div class="alert error"><?php echo h($error); ?></div>
        <?php endif; ?>
        <?php if (!empty($success)): ?>
            <div class="alert success"><?php echo h($success); ?></div>
        <?php endif; ?>

        <form method="POST" action="">
            <input type="hidden" name="redirect_to" value="<?php echo h($redirect_to); ?>">
            <input type="hidden" name="csrf_token" value="<?php echo h($CSRF); ?>">

            <div class="form-group">
                <label for="full_name">ПІБ</label>
                <input type="text" name="full_name" id="full_name"
                       value="<?php echo h($user['full_name'] ?? ''); ?>"
                       required>
            </div>

            <div class="form-group">
                <label for="email">Email</label>
                <input type="email" name="email" id="email"
                       value="<?php echo h($user['email'] ?? ''); ?>"
                       required>
            </div>

            <div class="form-group">
                <label for="role">Роль</label>
                <select name="role" id="role" required>
                    <option value="admin"   <?php echo (($user['role'] ?? '')==='admin')   ? 'selected' : ''; ?>>Адмін</option>
                    <option value="teacher" <?php echo (($user['role'] ?? '')==='teacher') ? 'selected' : ''; ?>>Викладач</option>
                    <option value="student" <?php echo (($user['role'] ?? '')==='student') ? 'selected' : ''; ?>>Учень</option>
                    <option value="parent"  <?php echo (($user['role'] ?? '')==='parent')  ? 'selected' : ''; ?>>Батько/Мати</option>
                </select>
            </div>

            <!-- Група (тільки student/parent) -->
            <div id="group_field" class="form-group role-block">
                <label for="group_id">Група (для учня/батьків)</label>
                <select name="group_id" id="group_id">
                    <option value="">Не вказано</option>
                    <?php foreach ($all_groups as $g): ?>
                        <?php
                            $gid = (int)$g['id'];
                            $selected = ((string)($user['group_id'] ?? '') === (string)$gid) ? 'selected' : '';
                            $course = (int)($g['course'] ?? 0);
                            $label = ($course > 0 ? ($course.' курс — ') : '') . (string)($g['group_name'] ?? '');
                        ?>
                        <option value="<?php echo $gid; ?>" <?php echo $selected; ?>>
                            <?php echo h($label); ?>
                        </option>
                    <?php endforeach; ?>
                </select>
            </div>


            <!-- Дитина (тільки parent) -->
            <div id="child_field" class="form-group role-block">
                <label for="child_id">Дитина (учень)</label>
                <select name="child_id" id="child_id">
                    <option value="">Не вказано</option>
                    <?php
                    // Список всіх учнів з групою. Далі фільтруємо на фронті по group_id.
                    $query_children = "SELECT u.id, u.full_name, g.group_name, u.group_id
                                       FROM users u
                                       LEFT JOIN `groups` g ON u.group_id = g.id
                                       WHERE u.role = 'student'
                                       ORDER BY g.group_name, u.full_name";
                    if ($res_children = $conn->query($query_children)) {
                        $current_group_id = (string)($user['group_id'] ?? '');
                        while ($child = $res_children->fetch_assoc()) {
                            $cid        = (int)$child['id'];
                            $groupId    = (int)($child['group_id'] ?? 0);
                            $isSelected = ((string)($user['child_id'] ?? '') === (string)$cid);

                            // Початковий рендер: якщо є група у батька — ховаємо інших дітей,
                            // але завжди показуємо поточного обраного учня.
                            $hiddenAttr = '';
                            if (!$isSelected && $current_group_id !== '' && (string)$groupId !== $current_group_id) {
                                $hiddenAttr = ' hidden';
                            }

                            $gname = $child['group_name'] ? ' ('.$child['group_name'].')' : '';
                            echo '<option value="'.$cid.'" data-group-id="'.$groupId.'"'.$hiddenAttr.' '.
                                 ($isSelected ? 'selected' : '').
                                 '>' .
                                 h($child['full_name'] . $gname) .
                                 '</option>';
                        }
                        $res_children->free();
                    }
                    ?>
                </select>
                <p class="hint">Спочатку вибери “Група”, тоді з’являться учні цієї групи.</p>
            </div>

            <!-- Класний керівник (тільки teacher) -->
            <div id="class_teacher_field" class="form-group role-block">
                <label for="class_teacher_groups">Класний керівник (оберіть групи)</label>
                <select name="class_teacher_groups[]" id="class_teacher_groups" multiple size="10">
                    <?php foreach ($all_groups as $g): ?>
                        <?php
                            $gid = (int)$g['id'];
                            $course = (int)($g['course'] ?? 0);
                            $label = ($course > 0 ? ($course.' курс — ') : '') . (string)($g['group_name'] ?? '');
                            $sel = in_array($gid, $selected_class_groups, true) ? 'selected' : '';
                        ?>
                        <option value="<?php echo $gid; ?>" <?php echo $sel; ?>>
                            <?php echo h($label); ?>
                        </option>
                    <?php endforeach; ?>
                </select>
                <p class="hint">Можна обрати кілька груп (Ctrl/Shift або на телефоні — мультивибір).</p>
            </div>

            <button type="submit" class="btn">Оновити</button>
            <a class="link-back" href="dashboard.php">Повернутися до панелі</a>
        </form>
    </section>
</main>

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

</body>
</html>