<?php
session_start();
require_once '../includes/db_config.php'; // шлях до db_config.php

// Перевірка, чи користувач увійшов
if (!isset($_SESSION['user_id'])) {
    header("Location: ../login.php");
    exit;
}

// Обробка редагування консультації
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['edit_consultation'])) {
    $id = (int)$_POST['id'];
    $group_id = (int)$_POST['group_id'];

    // У базі може бути або subject_id, або текстова назва (subject_name/subject)
    $subject_id = isset($_POST['subject_id']) ? (int)$_POST['subject_id'] : null;
    $subject_name = isset($_POST['subject_name']) ? trim($_POST['subject_name']) : null;

    $day_of_week = (string)($_POST['day_of_week'] ?? '');
    $lesson_number = (int)($_POST['lesson_number'] ?? 0);
    $date = (string)($_POST['date'] ?? '');
    $notes = trim((string)($_POST['notes'] ?? ''));

    // Перетворюємо день тижня з тексту в число
    $days_map = ['Пн'=>1,'Вт'=>2,'Ср'=>3,'Чт'=>4,'Пт'=>5];
    $day_of_week_numeric = $days_map[$day_of_week] ?? 0;
    if ($day_of_week_numeric === 0) {
        die("Помилка: Некоректний день тижня.");
    }

    // Перевірка: не дозволяти консультації в дні з 8 уроками
    $schedule_query = "SELECT COUNT(*) AS lesson_count FROM schedules WHERE group_id = ? AND day_of_week = ?";
    $schedule_stmt = $conn->prepare($schedule_query);
    $schedule_stmt->bind_param("is", $group_id, $day_of_week); // day_of_week у schedules як 'Пн','Вт',... (varchar)
    $schedule_stmt->execute();
    $lesson_count = $schedule_stmt->get_result()->fetch_assoc()['lesson_count'] ?? 0;
    $schedule_stmt->close();

    if ((int)$lesson_count >= 8) {
        die("Помилка: У цей день 8 уроків, консультації не дозволяються.");
    }

    // Оновлення консультації з урахуванням різних схем БД
    if ($subject_id) {
        // Варіант зі subject_id
        $stmt = $conn->prepare("
            UPDATE consultation_schedules
               SET group_id = ?, subject_id = ?, day_of_week = ?, lesson_number = ?, date = ?, notes = ?
             WHERE id = ?
        ");
        $stmt->bind_param("iiiissi", $group_id, $subject_id, $day_of_week_numeric, $lesson_number, $date, $notes, $id);
    } else {
        // Варіант зі строковою назвою предмета (subject_name/subject)
        $stmt = $conn->prepare("
            UPDATE consultation_schedules
               SET group_id = ?, day_of_week = ?, lesson_number = ?, date = ?, notes = ?, subject_name = COALESCE(?, subject_name)
             WHERE id = ?
        ");
        $stmt->bind_param("iiisssi", $group_id, $day_of_week_numeric, $lesson_number, $date, $notes, $subject_name, $id);
    }

    $stmt->execute();
    $stmt->close();

    header("Location: ../rozklad/consultations.php?group_id=$group_id");
    exit;
}

// Обробка видалення консультації
if (isset($_GET['delete'])) {
    $delete_id = (int)$_GET['delete'];
    $group_id = (int)($_GET['group_id'] ?? 0);

    $stmt = $conn->prepare("DELETE FROM consultation_schedules WHERE id = ?");
    $stmt->bind_param("i", $delete_id);
    $stmt->execute();
    $stmt->close();

    header("Location: ../rozklad/consultations.php?group_id=$group_id");
    exit;
}

// Отримуємо список груп
$groups = [];
$group_id = isset($_GET['group_id']) ? (int)$_GET['group_id'] : null;
$group_name = 'Невідома група';
$consultation_schedule = [];

if (!$group_id) {
    $groups_query = "SELECT * FROM `groups` ORDER BY position";
    $groups_result = $conn->query($groups_query);
    while ($row = $groups_result->fetch_assoc()) { $groups[] = $row; }
} else {
    $group_query = "SELECT name FROM `groups` WHERE id = ?";
    $group_stmt = $conn->prepare($group_query);
    $group_stmt->bind_param("i", $group_id);
    $group_stmt->execute();
    $group_result = $group_stmt->get_result();

    if ($group_result->num_rows > 0) {
        $group = $group_result->fetch_assoc();
        $group_name = $group['name'] ?: 'Невідома група';
    } else {
        die("Помилка: Група не знайдена.");
    }
    $group_stmt->close();

    // Отримуємо розклад консультацій
    $consultation_query = "SELECT * FROM consultation_schedules WHERE group_id = ? ORDER BY date, lesson_number";
    $consultation_stmt = $conn->prepare($consultation_query);
    $consultation_stmt->bind_param("i", $group_id);
    $consultation_stmt->execute();
    $consultation_result = $consultation_stmt->get_result();
    while ($row = $consultation_result->fetch_assoc()) { $consultation_schedule[] = $row; }
    $consultation_stmt->close();
}

// Масиви назв днів і часу консультацій
$days_full = ['Понеділок','Вівторок','Середа','Четвер','П’ятниця'];
$consultation_times = [1 => '15:30–16:15', 2 => '16:20–17:05'];

?>
<!DOCTYPE html>
<html lang="uk">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <title>Консультації для <?= htmlspecialchars($group_name, ENT_QUOTES, 'UTF-8'); ?></title>

  <!-- Bootstrap 5 -->
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"/>

  <!-- Наші стилі -->
  <link href="../css/consultations.css" rel="stylesheet"/>
</head>
<body class="kp-body">
<?php include '../includes/header.php'; ?>

<div class="container kp-container py-3">
  <div class="kp-hero mb-3">
    <div class="kp-hero__inner">
      <div class="kp-hero__badge">Розклад</div>
      <h2 class="kp-hero__title">
        Консультації
        <span class="kp-hero__subtitle">для групи <?= htmlspecialchars($group_name, ENT_QUOTES, 'UTF-8'); ?></span>
      </h2>

      <?php if ($group_id): ?>
        <div class="kp-hero__actions">
          <a class="btn btn-light kp-btn-soft" href="../rozklad/consultations.php">
            ← Обрати іншу групу
          </a>
        </div>
      <?php endif; ?>
    </div>
  </div>

  <?php if (!$group_id): ?>
    <div class="card kp-card shadow-sm mb-4">
      <div class="card-body">
        <h3 class="kp-section-title mb-3">Оберіть групу</h3>

        <div class="table-responsive">
          <table class="table table-hover align-middle kp-table">
            <thead>
              <tr>
                <th>Група</th>
                <th class="text-end">Дії</th>
              </tr>
            </thead>
            <tbody>
              <?php if (count($groups) > 0): ?>
                <?php foreach ($groups as $g): ?>
                  <tr>
                    <td data-label="Група">
                      <div class="kp-group-cell">
                        <div class="kp-group-pill"><?= htmlspecialchars($g['name'], ENT_QUOTES, 'UTF-8'); ?></div>
                      </div>
                    </td>
                    <td class="text-end" data-label="Дії">
                      <a href="edit_consultation.php?group_id=<?= (int)$g['id']; ?>" class="btn btn-primary btn-sm kp-btn-primary">
                        Переглянути
                      </a>
                    </td>
                  </tr>
                <?php endforeach; ?>
              <?php else: ?>
                <tr><td colspan="2" class="text-center text-muted py-4">Немає груп.</td></tr>
              <?php endif; ?>
            </tbody>
          </table>
        </div>

        <div class="kp-hint mt-3">
          Порада: на телефоні таблиця “збирається” в зручні картки.
        </div>
      </div>
    </div>
  <?php else: ?>
    <div class="card kp-card shadow-sm mb-4">
      <div class="card-body">
        <div class="kp-toolbar mb-3">
          <div class="kp-toolbar__left">
            <div class="kp-toolbar__title">Список консультацій</div>
            <div class="kp-toolbar__meta"><?= count($consultation_schedule); ?> запис(ів)</div>
          </div>
          <div class="kp-toolbar__right">
            <a class="btn btn-outline-secondary btn-sm kp-btn-outline" href="../rozklad/consultations.php?group_id=<?= (int)$group_id; ?>">
              Оновити
            </a>
          </div>
        </div>

        <div class="table-responsive">
          <table class="table table-hover align-middle kp-table">
            <thead>
              <tr>
                <th>Дата</th>
                <th>День тижня</th>
                <th>Предмет</th>
                <th>Час</th>
                <th>Примітка</th>
                <th class="text-end">Дії</th>
              </tr>
            </thead>
            <tbody>
            <?php if (count($consultation_schedule) > 0): ?>
              <?php foreach ($consultation_schedule as $entry):
                  // Підтримка різних схем збереження дня тижня
                  $dow = isset($entry['day_of_week']) ? (string)$entry['day_of_week'] : '';
                  $day_name = is_numeric($dow)
                      ? ($days_full[(int)$dow - 1] ?? '—')
                      : (['Пн'=>'Понеділок','Вт'=>'Вівторок','Ср'=>'Середа','Чт'=>'Четвер','Пт'=>'П’ятниця'][$dow] ?? '—');

                  // Назва предмету
                  $subject_name = $entry['subject_name'] ?? $entry['subject'] ?? 'Невідомий предмет';

                  // Час консультації
                  $time = $consultation_times[(int)$entry['lesson_number']] ?? 'Невідомий час';

                  // Дата
                  $date_str = '—';
                  if (!empty($entry['date'])) {
                      try { $date_str = (new DateTime($entry['date']))->format('d.m.Y'); } catch (Exception $e) {}
                  }
              ?>
                <tr>
                  <td data-label="Дата">
                    <div class="kp-date">
                      <div class="kp-date__main"><?= htmlspecialchars($date_str, ENT_QUOTES, 'UTF-8'); ?></div>
                    </div>
                  </td>
                  <td data-label="День тижня">
                    <span class="kp-chip"><?= htmlspecialchars($day_name, ENT_QUOTES, 'UTF-8'); ?></span>
                  </td>
                  <td data-label="Предмет">
                    <div class="kp-subject">
                      <?= htmlspecialchars($subject_name, ENT_QUOTES, 'UTF-8'); ?>
                    </div>
                  </td>
                  <td data-label="Час">
                    <span class="kp-time"><?= htmlspecialchars($time, ENT_QUOTES, 'UTF-8'); ?></span>
                  </td>
                  <td data-label="Примітка" class="kp-notes">
                    <?= htmlspecialchars($entry['notes'] ?? '', ENT_QUOTES, 'UTF-8'); ?>
                  </td>
                  <td class="text-end" data-label="Дії">
                    <button type="button" class="btn btn-warning btn-sm kp-btn-warn" data-bs-toggle="modal" data-bs-target="#editModal<?= (int)$entry['id']; ?>">
                      Редагувати
                    </button>
                    <a href="edit_consultation.php?delete=<?= (int)$entry['id']; ?>&group_id=<?= (int)$group_id; ?>"
                       class="btn btn-danger btn-sm kp-btn-danger"
                       onclick="return confirm('Ви впевнені, що хочете видалити цю консультацію?')">
                      Видалити
                    </a>
                  </td>
                </tr>

                <!-- Модальне вікно редагування -->
                <div class="modal fade" id="editModal<?= (int)$entry['id']; ?>" tabindex="-1" aria-labelledby="editModalLabel<?= (int)$entry['id']; ?>" aria-hidden="true">
                  <div class="modal-dialog modal-dialog-centered">
                    <div class="modal-content kp-modal">
                      <div class="modal-header kp-modal__header">
                        <h5 class="modal-title" id="editModalLabel<?= (int)$entry['id']; ?>">Редагувати консультацію</h5>
                        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                      </div>
                      <div class="modal-body">
                        <form method="POST" action="edit_consultation.php" class="needs-validation" novalidate>
                          <input type="hidden" name="id" value="<?= (int)$entry['id']; ?>">
                          <input type="hidden" name="group_id" value="<?= (int)$group_id; ?>">

                          <?php
                          // Якщо у вас є таблиця consultation_subjects з прив’язкою до group_id — можна показати select
                          $has_subjects = false;
                          $subjects_opts = [];

                          $sub_stmt = $conn->prepare("SELECT id, subject_id FROM consultation_subjects WHERE group_id = ? ORDER BY id");
                          if ($sub_stmt) {
                              $sub_stmt->bind_param("i", $group_id);
                              $sub_stmt->execute();
                              $sub_res = $sub_stmt->get_result();
                              while ($r = $sub_res->fetch_assoc()) { $subjects_opts[] = $r; }
                              $sub_stmt->close();
                              $has_subjects = count($subjects_opts) > 0;
                          }
                          ?>

                          <?php if ($has_subjects): ?>
                            <div class="mb-3">
                              <label class="form-label">Предмет:</label>
                              <select class="form-select kp-input" name="subject_id" required>
                                <?php
                                  foreach ($subjects_opts as $opt) {
                                      $sel = (isset($entry['subject_id']) && (int)$entry['subject_id'] === (int)$opt['id']) ? 'selected' : '';
                                      $label = 'ID '.$opt['subject_id']; // за потреби підтягніть назви з окремої таблиці предметів
                                      echo "<option value=\"".(int)$opt['id']."\" $sel>".htmlspecialchars($label, ENT_QUOTES, 'UTF-8')."</option>";
                                  }
                                ?>
                              </select>
                            </div>
                          <?php else: ?>
                            <div class="mb-3">
                              <label class="form-label">Предмет:</label>
                              <input type="text" class="form-control kp-input" name="subject_name"
                                     value="<?= htmlspecialchars($subject_name, ENT_QUOTES, 'UTF-8'); ?>" required>
                            </div>
                          <?php endif; ?>

                          <div class="mb-3">
                            <label class="form-label">День тижня:</label>
                            <select class="form-select kp-input" name="day_of_week" required>
                              <?php
                                $map = ['Пн'=>'Понеділок','Вт'=>'Вівторок','Ср'=>'Середа','Чт'=>'Четвер','Пт'=>'П’ятниця'];
                                foreach ($map as $k=>$v) {
                                    $selected = ($v === $day_name) ? 'selected' : '';
                                    echo "<option value=\"".htmlspecialchars($k, ENT_QUOTES, 'UTF-8')."\" $selected>".htmlspecialchars($v, ENT_QUOTES, 'UTF-8')."</option>";
                                }
                              ?>
                            </select>
                          </div>

                          <div class="mb-3">
                            <label class="form-label">Номер консультації:</label>
                            <select class="form-select kp-input" name="lesson_number" required>
                              <option value="1" <?= ((int)$entry['lesson_number']===1?'selected':''); ?>>15:30–16:15</option>
                              <option value="2" <?= ((int)$entry['lesson_number']===2?'selected':''); ?>>16:20–17:05</option>
                            </select>
                          </div>

                          <div class="mb-3">
                            <label class="form-label">Дата (рррр-мм-дд):</label>
                            <input type="date" class="form-control kp-input" name="date"
                                   value="<?= htmlspecialchars($entry['date'] ?? '', ENT_QUOTES, 'UTF-8'); ?>" required>
                          </div>

                          <div class="mb-3">
                            <label class="form-label">Примітка:</label>
                            <input type="text" class="form-control kp-input" name="notes"
                                   value="<?= htmlspecialchars($entry['notes'] ?? '', ENT_QUOTES, 'UTF-8'); ?>">
                          </div>

                          <div class="d-grid gap-2 d-sm-flex justify-content-sm-end">
                            <button type="submit" name="edit_consultation" class="btn btn-primary kp-btn-primary">
                              Зберегти зміни
                            </button>
                            <button type="button" class="btn btn-outline-secondary kp-btn-outline" data-bs-dismiss="modal">
                              Скасувати
                            </button>
                          </div>
                        </form>
                      </div>
                    </div>
                  </div>
                </div>
              <?php endforeach; ?>
            <?php else: ?>
              <tr><td colspan="6" class="text-center text-muted py-4">Немає консультацій для цієї групи.</td></tr>
            <?php endif; ?>
            </tbody>
          </table>
        </div>
      </div>
    </div>
  <?php endif; ?>
</div>

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

<!-- Bootstrap JS -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
<?php
// Закриваємо з’єднання вже після рендера
$conn->close();
