first
This commit is contained in:
@@ -0,0 +1,164 @@
|
||||
# Инструкция по добавлению функционала бронирования с временем
|
||||
|
||||
## 📋 Что было добавлено
|
||||
|
||||
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`
|
||||
|
||||
## 🎉 Готово!
|
||||
|
||||
Теперь ваша система бронирования поддерживает выбор времени с автоматической проверкой доступности!
|
||||
Reference in New Issue
Block a user