- Реализован выбор мастера - Добавлен выбор даты и времени - Добавлено подтверждение записи - Реализован раздел «Мои записи» - Добавлена отмена записи - Добавлена возможность редактирования записи - Реализована проверка занятых временных слотов - Улучшена логика FSM и пользовательский сценарий бронирования
93 lines
1.6 KiB
Python
93 lines
1.6 KiB
Python
from app.db.memory import bookings
|
|
|
|
|
|
def create_booking(
|
|
user_id: int,
|
|
service: str,
|
|
date: str,
|
|
master: str,
|
|
time: str
|
|
):
|
|
booking = {
|
|
"id": len(bookings) + 1,
|
|
"user_id": user_id,
|
|
"service": service,
|
|
"date": date,
|
|
"master": master,
|
|
"time": time,
|
|
"status": "active"
|
|
}
|
|
|
|
bookings.append(booking)
|
|
|
|
return booking
|
|
|
|
|
|
def get_busy_times(
|
|
master: str,
|
|
date: str
|
|
):
|
|
busy_times = []
|
|
|
|
for booking in bookings:
|
|
|
|
if (
|
|
booking["master"] == master
|
|
and booking["date"] == date
|
|
and booking["status"] == "active"
|
|
):
|
|
busy_times.append(
|
|
booking["time"]
|
|
)
|
|
|
|
return busy_times
|
|
|
|
|
|
def get_user_bookings(
|
|
user_id: int
|
|
):
|
|
result = []
|
|
|
|
for booking in bookings:
|
|
|
|
if (
|
|
booking["user_id"] == user_id
|
|
and booking["status"] == "active"
|
|
):
|
|
result.append(booking)
|
|
|
|
return result
|
|
|
|
def cancel_booking(
|
|
booking_id: int
|
|
):
|
|
|
|
for booking in bookings:
|
|
|
|
if booking["id"] == booking_id:
|
|
booking["status"] = "cancelled"
|
|
return True
|
|
|
|
return False
|
|
|
|
def update_booking(
|
|
booking_id: int,
|
|
service: str,
|
|
master: str,
|
|
date: str,
|
|
time: str
|
|
):
|
|
|
|
for booking in bookings:
|
|
|
|
if booking["id"] == booking_id:
|
|
|
|
booking["service"] = service
|
|
booking["master"] = master
|
|
booking["date"] = date
|
|
booking["time"] = time
|
|
|
|
return booking
|
|
|
|
return None
|