<?php
// journal/father_journal.php — перегляд оцінок дитини(дітей) для ролі parent
declare(strict_types=1);

session_start();
require_once __DIR__ . '/../includes/db_connect.php';
require_once __DIR__ . '/../includes/logger.php';

/* ===== Доступ лише для батьків ===== */
if (!isset($_SESSION['user_id']) || ($_SESSION['role'] ?? '') !== 'parent') {
    header("Location: ../index.php");
    exit();
}

$parent_id   = (int)$_SESSION['user_id'];
$parent_name = $_SESSION['full_name'] ?? 'Батько/Мати';

/* ===== Хелпери ===== */
if (!function_exists('h')) {
    function h(?string $s): string { return htmlspecialchars((string)$s, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); }
}
function build_lesson_url(int $child_id, int $subject_id, int $lesson_idx): string {
    return "father_journal.php?child_id={$child_id}&subject_id={$subject_id}&lesson_idx={$lesson_idx}";
}

/* ===== Список дітей, прив’язаних до батьківського акаунта ===== */
$kids = []; // [id => ['id'=>..., 'full_name'=>...]]
$sqlKids = "
    SELECT u.id, u.full_name
    FROM parent_links pl
    JOIN users u ON u.id = pl.student_id AND u.role='student'
    WHERE pl.parent_id = ?
    ORDER BY u.full_name ASC
";
if ($st = $conn->prepare($sqlKids)) {
    $st->bind_param('i', $parent_id);
    $st->execute();
    $res = $st->get_result();
    while ($row = $res->fetch_assoc()) { $kids[(int)$row['id']] = $row; }
    $st->close();
}

/* Якщо зв’язків немає — повідомлення + глобальний хедер/футер */
if (!$kids) {
    ?>
    <!DOCTYPE html>
    <html lang="uk">
    <head>
        <meta charset="UTF-8">
        <title>Щоденник дитини</title>
        <link rel="stylesheet" href="../assets/css/style.css">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <style>
            :root{
                --brand-mint:#a3e8d3;
                --brand-mint-2:#92dec7;
                --brand-purple:#432755;
                --brand-purple-2:#3a244d;

                --ink:#1f2937;
                --muted:#4b5563;
                --bg:#f6f7fb;
                --card:#ffffff;
                --shadow: 0 10px 24px rgba(0,0,0,.08);
                --border: rgba(0,0,0,.10);
                --focus: rgba(67,39,85,.25);
            }
            *{box-sizing:border-box}
            body{
                font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,"Noto Sans","Helvetica Neue",Arial;
                margin:0;
                background:var(--bg);
                color:var(--ink);
            }
            .wrap{max-width:1100px;margin:16px auto;padding:16px;}
            .card{
                background:var(--card);
                border:1px solid var(--border);
                border-radius:16px;
                box-shadow:var(--shadow);
                padding:18px;
                text-align:center;
            }
            h1{margin:0 0 10px;font-size:22px;color:var(--brand-purple);font-weight:900;letter-spacing:.2px;}
            .info{
                background: rgba(163,232,211,.22);
                border: 1px solid rgba(67,39,85,.14);
                color: var(--brand-purple);
                padding: 12px 14px;
                border-radius: 14px;
                margin-top: 12px;
                font-size: 14px;
                line-height: 1.6;
                font-weight: 700;
            }
            @media (max-width:600px){
                .wrap{padding:12px}
                .card{padding:16px;border-radius:14px}
            }
        </style>
    </head>
    <body>

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

    <main class="wrap">
        <section class="card">
            <h1>Щоденник дитини</h1>
            <div class="info">
                Поки що до вашого облікового запису не прив’язано жодної дитини.<br>
                Зверніться до адміністратора або класного керівника для створення зв’язку.
            </div>
        </section>
    </main>

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

    </body>
    </html>
    <?php
    exit;
}

/* ===== Обрати активну дитину ===== */
$child_id = isset($_GET['child_id']) ? (int)$_GET['child_id'] : 0;
if ($child_id <= 0 || !isset($kids[$child_id])) {
    $child_id = array_key_first($kids); // перша доступна дитина
}
$child_name = (string)($kids[$child_id]['full_name'] ?? 'Учень');

/* ===== Список предметів, де у дитини є хоч одна оцінка ===== */
$subjects = [];
$subjects_stmt = $conn->prepare("
    SELECT id, subject_name
    FROM subjects
    WHERE id IN (SELECT subject_id FROM grades WHERE student_id = ?)
    ORDER BY subject_name ASC
");
$subjects_stmt->bind_param("i", $child_id);
$subjects_stmt->execute();
$subjects_res = $subjects_stmt->get_result();
if ($subjects_res) {
    while ($row = $subjects_res->fetch_assoc()) { $subjects[] = $row; }
}
$subjects_stmt->close();

/* ===== Обраний предмет ===== */
$subject_id = isset($_GET['subject_id']) ? (int)$_GET['subject_id'] : 0;
$selected_subject = null;
if ($subject_id > 0) {
    $subject_stmt = $conn->prepare("SELECT subject_name FROM subjects WHERE id = ?");
    $subject_stmt->bind_param("i", $subject_id);
    $subject_stmt->execute();
    $sr = $subject_stmt->get_result();
    if ($sr && $sr->num_rows > 0) {
        $selected_subject = $sr->fetch_assoc();
    } else {
        $subject_id = 0;
    }
    $subject_stmt->close();
}

/* ===== Якщо предмет вибраний — готуємо дані уроків та поточний індекс ===== */
$lessons = [];
$total_lessons = 0;
$lesson_idx = -1;           // 0..N-1; -1 якщо немає уроків
$current_lesson = null;
$current_lesson_id = 0;
$current_topic = '';
$current_date_human = '';

if ($subject_id > 0 && $selected_subject) {
    $less_stmt = $conn->prepare("
        SELECT id, lesson_date, topic
        FROM lessons
        WHERE subject_id = ?
        ORDER BY lesson_date ASC, id ASC
    ");
    $less_stmt->bind_param("i", $subject_id);
    $less_stmt->execute();
    $less_res = $less_stmt->get_result();
    if ($less_res) {
        while ($row = $less_res->fetch_assoc()) { $lessons[] = $row; }
    }
    $less_stmt->close();

    $total_lessons = count($lessons);

    if ($total_lessons > 0) {
        $default_idx = $total_lessons - 1;
        $lesson_idx  = isset($_GET['lesson_idx']) ? (int)$_GET['lesson_idx'] : $default_idx;
        if ($lesson_idx < 0) $lesson_idx = 0;
        if ($lesson_idx > $total_lessons - 1) $lesson_idx = $total_lessons - 1;

        $current_lesson = $lessons[$lesson_idx];
        $current_lesson_id = (int)$current_lesson['id'];
        $current_topic = (string)$current_lesson['topic'];
        $current_date_human = date('d.m.Y', strtotime($current_lesson['lesson_date']));
    }
}

/* ===== Оцінка дитини за поточний урок ===== */
$grade = null;
$grade_row_exists = false;

if ($current_lesson_id > 0) {
    $g_stmt = $conn->prepare("
        SELECT grade FROM grades
        WHERE subject_id = ? AND lesson_id = ? AND student_id = ?
        LIMIT 1
    ");
    $g_stmt->bind_param("iii", $subject_id, $current_lesson_id, $child_id);
    $g_stmt->execute();
    $g_res = $g_stmt->get_result();
    if ($g_res && ($g = $g_res->fetch_assoc())) {
        $grade_row_exists = true;
        $grade = is_null($g['grade']) ? null : (int)$g['grade'];
    }
    $g_stmt->close();
}

/* ===== ЛОГУВАННЯ ПЕРЕГЛЯДУ ОЦІНОК ===== */
if ($subject_id > 0 && $selected_subject && $current_lesson_id > 0) {
    $grade_text = '—';
    if ($grade_row_exists) {
        $grade_text = is_null($grade) ? 'Не здав' : (string)$grade;
    }
    $subj_name = (string)($selected_subject['subject_name'] ?? '');
    $msg = "Переглянув(ла) оцінки дитини: {$child_name}. Предмет: {$subj_name}. Урок: " . ($lesson_idx + 1) . "/{$total_lessons}. Дата: {$current_date_human}. Оцінка: {$grade_text}.";
    ej_log_action($conn, $parent_id, 'parent', 'grades_view', $msg);
}

?>
<!DOCTYPE html>
<html lang="uk">
<head>
    <meta charset="UTF-8">
    <title>Щоденник дитини</title>
    <link rel="stylesheet" href="../assets/css/style.css">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <style>
        :root{
            --brand-mint:#a3e8d3;
            --brand-mint-2:#92dec7;
            --brand-purple:#432755;
            --brand-purple-2:#3a244d;

            --ink:#1f2937;
            --muted:#4b5563;
            --bg:#f6f7fb;
            --card:#ffffff;
            --shadow: 0 10px 24px rgba(0,0,0,.08);
            --border: rgba(0,0,0,.10);
            --focus: rgba(67,39,85,.25);

            --chip-bg: rgba(163,232,211,.22);
            --chip-br: rgba(67,39,85,.14);
        }

        *{box-sizing:border-box}
        body{
            font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,"Noto Sans","Helvetica Neue",Arial;
            margin:0;
            background:var(--bg);
            color:var(--ink);
        }

        .wrap{max-width:1100px;margin:16px auto;padding:16px;}
        .card{
            background:var(--card);
            border:1px solid var(--border);
            border-radius:16px;
            box-shadow:var(--shadow);
            padding:18px;
        }

        .page-head{
            display:flex;
            align-items:flex-start;
            justify-content:space-between;
            gap:12px;
            flex-wrap:wrap;
            margin-bottom:12px;
        }
        .title{
            margin:0;
            font-size:22px;
            color:var(--brand-purple);
            font-weight:900;
            letter-spacing:.2px;
        }
        .subtitle{
            margin:6px 0 0 0;
            color:var(--muted);
            font-weight:700;
            font-size:13px;
        }

        .child-switch{
            width:min(520px,100%);
            margin:0;
            text-align:left;
        }
        .child-switch label{
            display:block;
            font-weight:900;
            margin:0 0 6px;
            font-size:14px;
            color:var(--brand-purple);
        }
        .child-switch select{
            width:100%;
            padding:12px;
            border:1px solid rgba(0,0,0,.14);
            border-radius:12px;
            font-size:15px;
            background:#fff;
            outline:none;
        }
        .child-switch select:focus{
            border-color: rgba(67,39,85,.35);
            box-shadow:0 0 0 4px var(--focus);
        }

        .section-title{
            margin:12px 0 10px;
            font-size:16px;
            font-weight:900;
            color:var(--brand-purple);
        }

        .subjects-grid{
            display:grid;
            gap:10px;
            grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
            margin-top:10px;
        }

        .subjects-grid a.subject,
        .subjects-grid a.subject:hover{
            text-decoration:none !important; /* прибираємо underline з глобального a:hover */
        }

        .subject{
            display:flex;
            align-items:center;
            justify-content:space-between;
            gap:10px;
            background: linear-gradient(135deg, #fff 0%, rgba(163,232,211,.18) 100%);
            border:1px solid rgba(67,39,85,.10);
            border-radius:14px;
            padding:12px 12px;
            transition: transform .12s ease, box-shadow .12s ease, border-color .12s ease;
            box-shadow: 0 6px 16px rgba(0,0,0,.06);
            color: var(--ink);
        }
        .subject:hover{
            transform: translateY(-1px);
            box-shadow: 0 10px 22px rgba(0,0,0,.10);
            border-color: rgba(67,39,85,.18);
        }

        .subject.active{
            background: linear-gradient(135deg, rgba(67,39,85,.94) 0%, rgba(67,39,85,.84) 65%, rgba(67,39,85,.92) 100%);
            border-color: rgba(67,39,85,.30);
        }

        .subject-name{
            font-weight:900;
            line-height:1.25;
            color: var(--ink);
        }

        .subject-badge{
            flex:0 0 auto;
            font-weight:900;
            font-size:12px;
            padding:6px 10px;
            border-radius:999px;
            background: var(--chip-bg);
            border:1px solid var(--chip-br);
            color: var(--brand-purple);
        }

        /* ===== ВИПРАВЛЕННЯ: примусово робимо правильні кольори тексту/бейджа (перекриває будь-які глобальні стилі з !important) ===== */
        .subjects-grid a.subject .subject-name{
            color: var(--ink) !important;
            -webkit-text-fill-color: var(--ink) !important;
        }
        .subjects-grid a.subject .subject-badge{
            background: rgba(163,232,211,.22) !important;
            border-color: rgba(67,39,85,.14) !important;
            color: var(--brand-purple) !important;
            -webkit-text-fill-color: var(--brand-purple) !important;
        }

        .subjects-grid a.subject.active{
            color:#fff !important;
            -webkit-text-fill-color:#fff !important;
        }
        .subjects-grid a.subject.active .subject-name{
            color:#fff !important;
            -webkit-text-fill-color:#fff !important;
        }
        .subjects-grid a.subject.active .subject-badge{
            background: rgba(255,255,255,.18) !important;
            border-color: rgba(255,255,255,.22) !important;
            color:#fff !important;
            -webkit-text-fill-color:#fff !important;
        }

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

        .info{
            background: rgba(163,232,211,.22);
            border: 1px solid rgba(67,39,85,.14);
            color: var(--brand-purple);
            padding: 12px 14px;
            border-radius: 14px;
            margin-top: 12px;
            font-size: 14px;
            line-height: 1.6;
            font-weight: 700;
        }

        .lesson-head{
            margin-top:16px;
            display:flex;
            align-items:center;
            justify-content:space-between;
            gap:10px;
            flex-wrap:wrap;
        }
        .chips{
            display:flex;
            gap:8px;
            flex-wrap:wrap;
            align-items:center;
        }
        .chip{
            background: var(--chip-bg);
            border:1px solid var(--chip-br);
            color: var(--brand-purple);
            padding:6px 10px;
            border-radius:999px;
            font-size:12px;
            font-weight:900;
        }

        .nav-lessons{
            display:flex;
            gap:8px;
            align-items:center;
            flex-wrap:wrap;
        }

        /* ===== ВИПРАВЛЕННЯ: кнопки навігації завжди з білим текстом (прибирає "порожні фіолетові капсули") ===== */
        .nav-lessons a,
        .nav-lessons a:hover{
            text-decoration:none !important; /* прибираємо underline з глобального a:hover */
        }
        .nav-lessons a{
            display:inline-flex;
            align-items:center;
            justify-content:center;
            padding:10px 12px;
            border-radius:999px;
            font-weight:900;
            font-size:13px;
            user-select:none;

            color:#fff !important;
            -webkit-text-fill-color:#fff !important;

            background: linear-gradient(180deg, var(--brand-purple), var(--brand-purple-2)) !important;
            border: 1px solid rgba(255,255,255,.18) !important;
            box-shadow: 0 10px 18px rgba(67,39,85,.16) !important;

            transition: transform .12s ease, box-shadow .12s ease, filter .12s ease;
        }
        .nav-lessons a:hover{
            transform: translateY(-1px);
            box-shadow: 0 14px 24px rgba(67,39,85,.22) !important;
            filter: saturate(1.05);
        }
        .nav-lessons a:active{
            transform: translateY(0);
        }
        .nav-lessons a.disabled{
            opacity:.45;
            pointer-events:none;
            transform:none;
            filter:none;
            box-shadow: none !important;
        }

        .table-wrap{
            margin-top:12px;
            border-radius:16px;
            overflow:hidden;
            border:1px solid rgba(0,0,0,.10);
            box-shadow: 0 10px 22px rgba(0,0,0,.06);
        }
        table{
            width:100%;
            border-collapse:collapse;
            table-layout:fixed;
            background:#fff;
        }
        th,td{
            padding:12px 10px;
            text-align:center;
            border-bottom:1px solid rgba(0,0,0,.08);
        }
        thead th{
            background: linear-gradient(135deg, rgba(67,39,85,.96) 0%, rgba(67,39,85,.86) 100%);
            color:#fff;
            border-bottom: 1px solid rgba(255,255,255,.18);
        }
        .col-name{width:55%;text-align:left;font-weight:900;}
        .col-grade{width:45%;}
        .topic{
            font-weight:900;
            line-height:1.25;
            margin-bottom:2px;
            word-wrap:break-word;
        }
        .date{
            font-size:12px;
            opacity:.9;
            font-weight:700;
        }
        tbody td{
            font-weight:800;
        }

        @media (max-width:600px){
            .wrap{padding:12px}
            .card{padding:16px;border-radius:14px}
            th,td{padding:10px 8px}
            .col-name{width:58%}
            .col-grade{width:42%}
            .subjects-grid{grid-template-columns: 1fr}
        }
    </style>
</head>
<body>

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

<main class="wrap">
    <section class="card">
        <div class="page-head">
            <div>
                <h1 class="title">Вітаємо, <?= h($parent_name) ?>!</h1>
                <div class="subtitle">Тут ви можете переглядати оцінки дітей, прив’язаних до вашого акаунта.</div>
            </div>

            <!-- Перемикач дитини -->
            <div class="child-switch">
                <form method="get" action="">
                    <label for="child_id">Оберіть дитину</label>
                    <select id="child_id" name="child_id" onchange="this.form.submit()">
                        <?php foreach ($kids as $id => $info): ?>
                            <option value="<?= (int)$id ?>" <?= ($id === $child_id ? 'selected' : ''); ?>>
                                <?= h($info['full_name']) ?>
                            </option>
                        <?php endforeach; ?>
                    </select>

                    <?php if ($subject_id > 0): ?>
                        <input type="hidden" name="subject_id" value="<?= (int)$subject_id ?>">
                        <input type="hidden" name="lesson_idx" value="<?= (int)($lesson_idx>=0?$lesson_idx:0) ?>">
                    <?php endif; ?>
                </form>
            </div>
        </div>

        <div class="section-title">Предмети дитини</div>

        <?php if (count($subjects) > 0): ?>
            <div class="subjects-grid" aria-label="Список предметів">
                <?php foreach ($subjects as $row): ?>
                    <?php
                        $sid = (int)$row['id'];
                        $isActive = ($subject_id === $sid);
                        $href = "father_journal.php?child_id=".(int)$child_id."&subject_id=".$sid;
                    ?>
                    <a class="subject <?= $isActive ? 'active' : '' ?>" href="<?= h($href) ?>">
                        <div class="subject-name"><?= h($row['subject_name']); ?></div>
                        <div class="subject-badge"><?= $isActive ? 'Відкрито' : 'Переглянути' ?></div>
                    </a>
                <?php endforeach; ?>
            </div>
            <p class="muted">Натисніть на предмет, щоб подивитись оцінку за конкретний урок.</p>
        <?php else: ?>
            <div class="info">
                Поки що у вибраної дитини немає жодної оцінки.<br>
                Коли з’явиться перша — відповідні предмети автоматично відобразяться тут.
            </div>
        <?php endif; ?>

        <?php if ($subject_id > 0 && $selected_subject): ?>
            <div class="section-title" style="margin-top:16px">
                Оцінки з предмету: <?= h($selected_subject['subject_name']); ?>
            </div>

            <?php if ($total_lessons > 0): ?>
                <div class="lesson-head">
                    <div class="chips">
                        <span class="chip">Уроків: <?= (int)$total_lessons; ?></span>
                        <span class="chip">Урок: <?= (int)($lesson_idx + 1); ?> / <?= (int)$total_lessons; ?></span>
                    </div>

                    <div class="nav-lessons">
                        <?php
                            $prev_idx = max(0, $lesson_idx - 1);
                            $next_idx = min($total_lessons - 1, $lesson_idx + 1);
                        ?>
                        <a class="<?= ($lesson_idx<=0)?'disabled':''; ?>"
                           href="<?= h(build_lesson_url($child_id, $subject_id, $prev_idx)); ?>">← Попередній</a>
                        <a class="<?= ($lesson_idx>=$total_lessons-1)?'disabled':''; ?>"
                           href="<?= h(build_lesson_url($child_id, $subject_id, $next_idx)); ?>">Наступний →</a>
                    </div>
                </div>

                <div class="table-wrap">
                    <table>
                        <thead>
                            <tr>
                                <th class="col-name">ПІБ</th>
                                <th class="col-grade">
                                    <div class="topic" title="<?= h($current_topic); ?>">
                                        <?= h($current_topic); ?>
                                    </div>
                                    <div class="date"><?= h($current_date_human); ?></div>
                                </th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td class="col-name"><?= h($child_name); ?></td>
                                <td class="col-grade">
                                    <?php
                                        if (!$grade_row_exists) {
                                            echo '—';
                                        } else {
                                            echo is_null($grade) ? 'Не здав' : h((string)$grade);
                                        }
                                    ?>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                </div>
            <?php else: ?>
                <div class="info">Для цього предмету ще немає уроків.</div>
            <?php endif; ?>
        <?php endif; ?>
    </section>
</main>

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

</body>
</html>
