Files
StikeArena_chrt/BOOKING_SETUP_INSTRUCTIONS.md
T
2026-06-02 17:45:29 +05:00

7.2 KiB

Инструкция по добавлению функционала бронирования с временем

📋 Что было добавлено

  1. Выбор времени при бронировании - на третьем этапе теперь можно выбрать не только дату, но и время
  2. Проверка доступности - система автоматически проверяет доступность временных слотов с учетом количества компьютеров
  3. Админ-панель - на главной странице админки теперь отображается информация о всех бронированиях по часам
  4. Сохранение в БД - все бронирования теперь сохраняются в базу данных

🗄️ Обновление базы данных

Шаг 1: Выполните SQL скрипт

Откройте файл DATABASE_UPDATE.sql и выполните его содержимое в вашей MySQL базе данных.

Вы можете сделать это через:

  • phpMyAdmin
  • MySQL Workbench
  • Командную строку MySQL
  • Любой другой MySQL клиент

Шаг 2: Проверьте создание таблицы

После выполнения скрипта проверьте, что таблица bookings создана:

SHOW TABLES LIKE 'bookings';
DESCRIBE bookings;

📊 Структура таблицы bookings

Таблица содержит следующие поля:

  • id - уникальный идентификатор
  • type - тип активности (pc, ps, tv, zayvka)
  • room - тип комнаты (solo, duo, trio, bootcamp 5, bootcamp 6)
  • date_time - полная дата и время бронирования
  • time_slot - временной слот в формате HH:00 (например, 14:00)
  • name - имя клиента
  • game - название игры (опционально)
  • contact - контактный номер телефона
  • contact_method - способ связи (telegram, whatsapp, phone)
  • status - статус бронирования (pending, confirmed, cancelled)
  • created_at - дата создания записи

🎮 Количество компьютеров по типам комнат

Система учитывает следующие ограничения:

  • solo - 5 компьютеров
  • duo - 4 компьютера
  • trio - 3 компьютера
  • bootcamp 5 - 2 компьютера
  • bootcamp 6 - 1 компьютер

🔧 API Endpoints

Получение доступных временных слотов

GET /api/bookings/available-slots?date=2026-01-25&room=solo

Возвращает список всех часов (00:00 - 23:00) с информацией о доступности.

Создание бронирования

POST /api/bookings
Body: {
  type: "pc",
  room: "solo",
  date: "2026-01-25",
  time: "14:00",
  name: "Иван",
  game: "CS2",
  contact: "+7 (777) 123-45-67",
  contactMethod: "telegram"
}

Получение бронирований (для админки)

GET /api/admin/bookings?date=2026-01-25&room=solo

Обновление статуса бронирования

PUT /api/admin/bookings
Body: {
  id: 1,
  status: "confirmed"
}

Удаление бронирования

DELETE /api/admin/bookings?id=1

🎨 Интерфейс

Форма бронирования

На третьем этапе (pc3) теперь:

  1. Выбирается дата
  2. После выбора даты автоматически загружаются доступные временные слоты
  3. Пользователь видит сетку с часами (00:00 - 23:00)
  4. Недоступные слоты (когда все компьютеры заняты) отображаются серым цветом и неактивны
  5. Доступные слоты можно выбрать

Админ-панель

На главной странице админки (/admin):

  1. Выбор даты для просмотра бронирований
  2. Фильтр по типу комнаты (или все комнаты)
  3. Таблица по часам для каждой комнаты с индикацией занятости:
    • 🟢 Зеленый - есть свободные места
    • 🔴 Красный - все места заняты
  4. Список всех бронирований с возможностью:
    • Изменения статуса (Ожидает / Подтверждено / Отменено)
    • Удаления бронирования

Проверка работы

После установки проверьте:

  1. Форма бронирования:

    • Откройте форму бронирования
    • Пройдите до этапа выбора даты и времени
    • Убедитесь, что после выбора даты появляются временные слоты
    • Попробуйте создать бронирование
  2. Админ-панель:

    • Войдите в админ-панель
    • Перейдите на главную страницу
    • Убедитесь, что отображаются таблицы с бронированиями по часам
    • Попробуйте изменить статус бронирования
  3. База данных:

    • Проверьте, что новые бронирования сохраняются в таблицу bookings
    • Убедитесь, что данные корректны

🐛 Возможные проблемы

Ошибка "Table 'bookings' doesn't exist"

  • Убедитесь, что вы выполнили SQL скрипт из DATABASE_UPDATE.sql

Временные слоты не загружаются

  • Проверьте консоль браузера на наличие ошибок
  • Убедитесь, что API endpoint /api/bookings/available-slots доступен
  • Проверьте, что в запросе передаются параметры date и room

Бронирование не сохраняется

  • Проверьте логи сервера
  • Убедитесь, что все обязательные поля заполнены
  • Проверьте подключение к базе данных

📝 Дополнительные настройки

Если вы хотите изменить количество компьютеров для какого-то типа комнаты, отредактируйте константу ROOM_CAPACITY в файлах:

  • src/app/api/bookings/available-slots/route.ts
  • src/app/admin/page.tsx

🎉 Готово!

Теперь ваша система бронирования поддерживает выбор времени с автоматической проверкой доступности!