Срочные улучшения: проверка занятости слота, автоочистка cancelled записей
This commit is contained in:
+23
-4
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user