-добавил выбор мастера;
-расширил 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.filters import StateFilter
|
||||||
from aiogram.types import Message, CallbackQuery
|
from aiogram.types import Message, CallbackQuery
|
||||||
from app.keyboards.services import get_services_keyboard
|
from app.keyboards.services import get_services_keyboard
|
||||||
|
from app.keyboards.masters import get_masters_keyboard
|
||||||
from app.states.booking import BookingState
|
from app.states.booking import BookingState
|
||||||
from app.services.booking_service import create_booking
|
from app.services.booking_service import create_booking
|
||||||
from app.keyboards.menu import menu, cancel_menu
|
from app.keyboards.menu import menu, cancel_menu
|
||||||
@@ -59,9 +59,42 @@ async def choose_service(
|
|||||||
service=service_name
|
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(
|
await state.set_state(
|
||||||
BookingState.date
|
BookingState.date
|
||||||
)
|
)
|
||||||
|
|
||||||
await callback.message.edit_text(
|
await callback.message.edit_text(
|
||||||
"📅 Выберите дату:",
|
"📅 Выберите дату:",
|
||||||
reply_markup=get_dates_keyboard()
|
reply_markup=get_dates_keyboard()
|
||||||
@@ -127,6 +160,7 @@ async def choose_time(
|
|||||||
f"📋 Проверьте запись:\n\n"
|
f"📋 Проверьте запись:\n\n"
|
||||||
f"💆 Услуга: {data['service']}\n"
|
f"💆 Услуга: {data['service']}\n"
|
||||||
f"📅 Дата: {data['date']}\n"
|
f"📅 Дата: {data['date']}\n"
|
||||||
|
f"👤 Мастер:{data['master']}\n"
|
||||||
f"🕒 Время: {selected_time}",
|
f"🕒 Время: {selected_time}",
|
||||||
reply_markup=get_confirm_booking_keyboard()
|
reply_markup=get_confirm_booking_keyboard()
|
||||||
)
|
)
|
||||||
@@ -149,6 +183,7 @@ async def confirm_booking_callback(
|
|||||||
user_id=callback.from_user.id,
|
user_id=callback.from_user.id,
|
||||||
service=data["service"],
|
service=data["service"],
|
||||||
date=data["date"],
|
date=data["date"],
|
||||||
|
master=data["master"],
|
||||||
time=data["time"]
|
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,
|
user_id: int,
|
||||||
service: str,
|
service: str,
|
||||||
date: str,
|
date: str,
|
||||||
|
master:str,
|
||||||
time: str
|
time: str
|
||||||
):
|
):
|
||||||
booking = {
|
booking = {
|
||||||
"user_id": user_id,
|
"user_id": user_id,
|
||||||
"service": service,
|
"service": service,
|
||||||
"date": date,
|
"date": date,
|
||||||
|
"master": master,
|
||||||
"time": time,
|
"time": time,
|
||||||
"status": "active"
|
"status": "active"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ from aiogram.fsm.state import StatesGroup, State
|
|||||||
|
|
||||||
class BookingState(StatesGroup):
|
class BookingState(StatesGroup):
|
||||||
service = State()
|
service = State()
|
||||||
|
master = State()
|
||||||
date = State()
|
date = State()
|
||||||
time = State()
|
time = State()
|
||||||
confirm = State()
|
confirm = State()
|
||||||
Reference in New Issue
Block a user