Добавлена система управления записями и улучшен процесс бронирования

- Реализован выбор мастера
- Добавлен выбор даты и времени
- Добавлено подтверждение записи
- Реализован раздел «Мои записи»
- Добавлена отмена записи
- Добавлена возможность редактирования записи
- Реализована проверка занятых временных слотов
- Улучшена логика FSM и пользовательский сценарий бронирования
This commit is contained in:
grigorij
2026-06-13 20:28:32 +04:00
parent 8d95ad3931
commit 8b20de1da5
6 changed files with 252 additions and 42 deletions
+42 -9
View File
@@ -7,7 +7,11 @@ from aiogram.types import Message, CallbackQuery
from app.keyboards.services import get_services_keyboard
from app.keyboards.masters import get_masters_keyboard
from app.states.booking import BookingState
from app.services.booking_service import create_booking
from app.services.booking_service import (
create_booking,
update_booking,
get_busy_times
)
from app.keyboards.menu import menu, cancel_menu
from app.keyboards.calendar import get_dates_keyboard
from app.keyboards.time_slots import get_time_keyboard
@@ -121,13 +125,22 @@ async def choose_date(
date=selected_date
)
data = await state.get_data()
busy_times = get_busy_times(
master=data["master"],
date=selected_date
)
await state.set_state(
BookingState.time
)
await callback.message.edit_text(
"🕒 Выберите время:",
reply_markup=get_time_keyboard()
reply_markup=get_time_keyboard(
busy_times
)
)
await callback.answer()
@@ -179,18 +192,38 @@ async def confirm_booking_callback(
):
data = await state.get_data()
create_booking(
user_id=callback.from_user.id,
service=data["service"],
date=data["date"],
master=data["master"],
time=data["time"]
editing_booking_id = data.get(
"editing_booking_id"
)
if editing_booking_id:
update_booking(
booking_id=editing_booking_id,
service=data["service"],
master=data["master"],
date=data["date"],
time=data["time"]
)
result_text = "✅ Запись успешно обновлена"
else:
create_booking(
user_id=callback.from_user.id,
service=data["service"],
master=data["master"],
date=data["date"],
time=data["time"]
)
result_text = "✅ Запись успешно создана"
await state.clear()
await callback.message.edit_text(
"✅ Запись успешно создана"
result_text
)
await callback.answer()