Срочные улучшения: проверка занятости слота, автоочистка cancelled записей

This commit is contained in:
devproject
2026-06-14 20:59:46 +04:00
parent 4d031924ae
commit eb9b16784f
2 changed files with 60 additions and 4 deletions
+23 -4
View File
@@ -10,7 +10,9 @@ from app.states.booking import BookingState
from app.services.booking_service import (
create_booking,
update_booking,
get_busy_times
get_busy_times,
is_slot_busy,
cleanup_cancelled
)
from app.keyboards.menu import menu, cancel_menu
from app.keyboards.calendar import get_dates_keyboard
@@ -210,14 +212,31 @@ async def confirm_booking_callback(
else:
# Check if slot is already taken
master = data.get('master', '?')
date = data.get('date', '?')
time = data.get('time', '?')
if await is_slot_busy(master, date, time):
logger.warning("Slot already busy: {mst} {dt} {tm}", mst=master, dt=date, tm=time)
await callback.message.edit_text(
"❌ Это время уже занято. Пожалуйста, выберите другое время."
)
await state.clear()
await callback.answer()
return
await create_booking(
user_id=callback.from_user.id,
service=data.get('service', '?'),
master=data.get('master', '?'),
date=data.get('date', '?'),
time=data.get('time', '?')
master=master,
date=date,
time=time
)
# Clean up old cancelled bookings
cleanup_cancelled()
result_text = "✅ Запись успешно создана"
await state.clear()