Добавлена система управления записями и улучшен процесс бронирования
- Реализован выбор мастера - Добавлен выбор даты и времени - Добавлено подтверждение записи - Реализован раздел «Мои записи» - Добавлена отмена записи - Добавлена возможность редактирования записи - Реализована проверка занятых временных слотов - Улучшена логика FSM и пользовательский сценарий бронирования
This commit is contained in:
+42
-9
@@ -7,7 +7,11 @@ 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.services.booking_service import (
|
||||
create_booking,
|
||||
update_booking,
|
||||
get_busy_times
|
||||
)
|
||||
from app.keyboards.menu import menu, cancel_menu
|
||||
from app.keyboards.calendar import get_dates_keyboard
|
||||
from app.keyboards.time_slots import get_time_keyboard
|
||||
@@ -121,13 +125,22 @@ async def choose_date(
|
||||
date=selected_date
|
||||
)
|
||||
|
||||
data = await state.get_data()
|
||||
|
||||
busy_times = get_busy_times(
|
||||
master=data["master"],
|
||||
date=selected_date
|
||||
)
|
||||
|
||||
await state.set_state(
|
||||
BookingState.time
|
||||
)
|
||||
|
||||
await callback.message.edit_text(
|
||||
"🕒 Выберите время:",
|
||||
reply_markup=get_time_keyboard()
|
||||
reply_markup=get_time_keyboard(
|
||||
busy_times
|
||||
)
|
||||
)
|
||||
|
||||
await callback.answer()
|
||||
@@ -179,18 +192,38 @@ async def confirm_booking_callback(
|
||||
):
|
||||
data = await state.get_data()
|
||||
|
||||
create_booking(
|
||||
user_id=callback.from_user.id,
|
||||
service=data["service"],
|
||||
date=data["date"],
|
||||
master=data["master"],
|
||||
time=data["time"]
|
||||
editing_booking_id = data.get(
|
||||
"editing_booking_id"
|
||||
)
|
||||
|
||||
if editing_booking_id:
|
||||
|
||||
update_booking(
|
||||
booking_id=editing_booking_id,
|
||||
service=data["service"],
|
||||
master=data["master"],
|
||||
date=data["date"],
|
||||
time=data["time"]
|
||||
)
|
||||
|
||||
result_text = "✅ Запись успешно обновлена"
|
||||
|
||||
else:
|
||||
|
||||
create_booking(
|
||||
user_id=callback.from_user.id,
|
||||
service=data["service"],
|
||||
master=data["master"],
|
||||
date=data["date"],
|
||||
time=data["time"]
|
||||
)
|
||||
|
||||
result_text = "✅ Запись успешно создана"
|
||||
|
||||
await state.clear()
|
||||
|
||||
await callback.message.edit_text(
|
||||
"✅ Запись успешно создана"
|
||||
result_text
|
||||
)
|
||||
await callback.answer()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user