-добавил выбор мастера;
-расширил FSM новым состоянием master; -добавил новую клавиатуру masters.py; -изменил сценарий записи; -доработал окно подтверждения записи; -расширил структуру хранения бронирований.
This commit is contained in:
+36
-1
@@ -5,7 +5,7 @@ from aiogram.fsm.context import FSMContext
|
||||
from aiogram.filters import StateFilter
|
||||
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.keyboards.menu import menu, cancel_menu
|
||||
@@ -59,9 +59,42 @@ async def choose_service(
|
||||
service=service_name
|
||||
)
|
||||
|
||||
await state.set_state(
|
||||
BookingState.master
|
||||
)
|
||||
await callback.message.edit_text(
|
||||
"👤 Выберите специалиста:",
|
||||
reply_markup=get_masters_keyboard()
|
||||
)
|
||||
|
||||
await callback.answer()
|
||||
|
||||
#выбор мастера
|
||||
@router.callback_query(
|
||||
StateFilter(BookingState.master),
|
||||
F.data.startswith("master_")
|
||||
)
|
||||
async def choose_master(
|
||||
callback: CallbackQuery,
|
||||
state: FSMContext
|
||||
):
|
||||
|
||||
masters = {
|
||||
"master_anna": "Анна",
|
||||
"master_maria": "Мария",
|
||||
"master_alex": "Алексей"
|
||||
}
|
||||
|
||||
master_name = masters[callback.data]
|
||||
|
||||
await state.update_data(
|
||||
master=master_name
|
||||
)
|
||||
|
||||
await state.set_state(
|
||||
BookingState.date
|
||||
)
|
||||
|
||||
await callback.message.edit_text(
|
||||
"📅 Выберите дату:",
|
||||
reply_markup=get_dates_keyboard()
|
||||
@@ -127,6 +160,7 @@ async def choose_time(
|
||||
f"📋 Проверьте запись:\n\n"
|
||||
f"💆 Услуга: {data['service']}\n"
|
||||
f"📅 Дата: {data['date']}\n"
|
||||
f"👤 Мастер:{data['master']}\n"
|
||||
f"🕒 Время: {selected_time}",
|
||||
reply_markup=get_confirm_booking_keyboard()
|
||||
)
|
||||
@@ -149,6 +183,7 @@ async def confirm_booking_callback(
|
||||
user_id=callback.from_user.id,
|
||||
service=data["service"],
|
||||
date=data["date"],
|
||||
master=data["master"],
|
||||
time=data["time"]
|
||||
)
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
from aiogram.types import InlineKeyboardMarkup
|
||||
from aiogram.types import InlineKeyboardButton
|
||||
|
||||
|
||||
def get_masters_keyboard():
|
||||
|
||||
return InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="👩 Анна",
|
||||
callback_data="master_anna"
|
||||
)
|
||||
],
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="👩 Мария",
|
||||
callback_data="master_maria"
|
||||
)
|
||||
],
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="👨 Алексей",
|
||||
callback_data="master_alex"
|
||||
)
|
||||
]
|
||||
]
|
||||
)
|
||||
@@ -5,12 +5,14 @@ def create_booking(
|
||||
user_id: int,
|
||||
service: str,
|
||||
date: str,
|
||||
master:str,
|
||||
time: str
|
||||
):
|
||||
booking = {
|
||||
"user_id": user_id,
|
||||
"service": service,
|
||||
"date": date,
|
||||
"master": master,
|
||||
"time": time,
|
||||
"status": "active"
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ from aiogram.fsm.state import StatesGroup, State
|
||||
|
||||
class BookingState(StatesGroup):
|
||||
service = State()
|
||||
master = State()
|
||||
date = State()
|
||||
time = State()
|
||||
confirm = State()
|
||||
Reference in New Issue
Block a user