Добавлена кнопка Назад на всех этапах записи (услуга→мастер→дата→время→подтверждение)
This commit is contained in:
@@ -290,3 +290,73 @@ async def edit_booking_callback(
|
||||
"Выберите услугу:",
|
||||
reply_markup=get_services_keyboard()
|
||||
)
|
||||
|
||||
|
||||
@router.callback_query(
|
||||
F.data == "go_back"
|
||||
)
|
||||
async def go_back_handler(
|
||||
callback: CallbackQuery,
|
||||
state: FSMContext
|
||||
):
|
||||
current_state = await state.get_state()
|
||||
|
||||
if current_state == BookingState.master:
|
||||
# Back to service selection
|
||||
await state.set_state(BookingState.service)
|
||||
from app.keyboards.services import get_services_keyboard
|
||||
await callback.message.edit_text(
|
||||
"Выберите услугу:",
|
||||
reply_markup=get_services_keyboard()
|
||||
)
|
||||
|
||||
elif current_state == BookingState.date:
|
||||
# Back to master selection
|
||||
await state.set_state(BookingState.master)
|
||||
from app.keyboards.masters import get_masters_keyboard
|
||||
# Remove saved date from state, keep service
|
||||
data = await state.get_data()
|
||||
data.pop("date", None)
|
||||
data.pop("time", None)
|
||||
await state.set_data(data)
|
||||
await callback.message.edit_text(
|
||||
"👤 Выберите специалиста:",
|
||||
reply_markup=get_masters_keyboard()
|
||||
)
|
||||
|
||||
elif current_state == BookingState.time:
|
||||
# Back to date selection
|
||||
await state.set_state(BookingState.date)
|
||||
from app.keyboards.calendar import get_dates_keyboard
|
||||
# Remove saved time, keep master/date
|
||||
data = await state.get_data()
|
||||
data.pop("time", None)
|
||||
await state.set_data(data)
|
||||
await callback.message.edit_text(
|
||||
"📅 Выберите дату:",
|
||||
reply_markup=get_dates_keyboard()
|
||||
)
|
||||
|
||||
elif current_state == BookingState.confirm:
|
||||
# Back to time selection
|
||||
await state.set_state(BookingState.time)
|
||||
data = await state.get_data()
|
||||
from app.keyboards.time_slots import get_time_keyboard
|
||||
from app.services.booking_service import get_busy_times
|
||||
busy_times = await get_busy_times(
|
||||
master=data.get("master", "?"),
|
||||
date=data.get("date", "?")
|
||||
)
|
||||
await callback.message.edit_text(
|
||||
"🕒 Выберите время:",
|
||||
reply_markup=get_time_keyboard(busy_times)
|
||||
)
|
||||
|
||||
else:
|
||||
# Fallback — back to start
|
||||
await state.clear()
|
||||
await callback.message.edit_text(
|
||||
"Отмена записи"
|
||||
)
|
||||
|
||||
await callback.answer()
|
||||
|
||||
Reference in New Issue
Block a user