Добавлена кнопка Назад на всех этапах записи (услуга→мастер→дата→время→подтверждение)

This commit is contained in:
devproject
2026-06-14 21:03:51 +04:00
parent eb9b16784f
commit dfa41c9a4e
4 changed files with 83 additions and 0 deletions
+70
View File
@@ -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()
+5
View File
@@ -0,0 +1,5 @@
from aiogram.types import InlineKeyboardButton
def get_back_button():
return [InlineKeyboardButton(text="◀ Назад", callback_data="go_back")]
+4
View File
@@ -2,9 +2,13 @@ from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
from app.config import MASTERS
from app.keyboards.back import get_back_button
def get_masters_keyboard():
buttons = [
[InlineKeyboardButton(text=name, callback_data=key)]
for key, name in MASTERS.items()
]
buttons.append(get_back_button())
return InlineKeyboardMarkup(inline_keyboard=buttons)
+4
View File
@@ -2,9 +2,13 @@ from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
from app.config import SERVICES
from app.keyboards.back import get_back_button
def get_services_keyboard():
buttons = [
[InlineKeyboardButton(text=name, callback_data=key)]
for key, name in SERVICES.items()
]
buttons.append(get_back_button())
return InlineKeyboardMarkup(inline_keyboard=buttons)