# Инструкция по добавлению функционала бронирования с временем ## 📋 Что было добавлено 1. **Выбор времени при бронировании** - на третьем этапе теперь можно выбрать не только дату, но и время 2. **Проверка доступности** - система автоматически проверяет доступность временных слотов с учетом количества компьютеров 3. **Админ-панель** - на главной странице админки теперь отображается информация о всех бронированиях по часам 4. **Сохранение в БД** - все бронирования теперь сохраняются в базу данных ## 🗄️ Обновление базы данных ### Шаг 1: Выполните SQL скрипт Откройте файл `DATABASE_UPDATE.sql` и выполните его содержимое в вашей MySQL базе данных. Вы можете сделать это через: - phpMyAdmin - MySQL Workbench - Командную строку MySQL - Любой другой MySQL клиент ### Шаг 2: Проверьте создание таблицы После выполнения скрипта проверьте, что таблица `bookings` создана: ```sql 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` ## 🎉 Готово! Теперь ваша система бронирования поддерживает выбор времени с автоматической проверкой доступности!