7.2 KiB
7.2 KiB
Инструкция по добавлению функционала бронирования с временем
📋 Что было добавлено
- Выбор времени при бронировании - на третьем этапе теперь можно выбрать не только дату, но и время
- Проверка доступности - система автоматически проверяет доступность временных слотов с учетом количества компьютеров
- Админ-панель - на главной странице админки теперь отображается информация о всех бронированиях по часам
- Сохранение в БД - все бронирования теперь сохраняются в базу данных
🗄️ Обновление базы данных
Шаг 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) теперь:
- Выбирается дата
- После выбора даты автоматически загружаются доступные временные слоты
- Пользователь видит сетку с часами (00:00 - 23:00)
- Недоступные слоты (когда все компьютеры заняты) отображаются серым цветом и неактивны
- Доступные слоты можно выбрать
Админ-панель
На главной странице админки (/admin):
- Выбор даты для просмотра бронирований
- Фильтр по типу комнаты (или все комнаты)
- Таблица по часам для каждой комнаты с индикацией занятости:
- 🟢 Зеленый - есть свободные места
- 🔴 Красный - все места заняты
- Список всех бронирований с возможностью:
- Изменения статуса (Ожидает / Подтверждено / Отменено)
- Удаления бронирования
✅ Проверка работы
После установки проверьте:
-
Форма бронирования:
- Откройте форму бронирования
- Пройдите до этапа выбора даты и времени
- Убедитесь, что после выбора даты появляются временные слоты
- Попробуйте создать бронирование
-
Админ-панель:
- Войдите в админ-панель
- Перейдите на главную страницу
- Убедитесь, что отображаются таблицы с бронированиями по часам
- Попробуйте изменить статус бронирования
-
База данных:
- Проверьте, что новые бронирования сохраняются в таблицу
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.tssrc/app/admin/page.tsx
🎉 Готово!
Теперь ваша система бронирования поддерживает выбор времени с автоматической проверкой доступности!