updates
This commit is contained in:
@@ -8,6 +8,7 @@ from .booking import Booking
|
||||
from .payment import Payment
|
||||
from .service import Service
|
||||
from .service_usage import ServiceUsage
|
||||
from .service_booking import ServiceBooking, ServiceBookingItem, ServicePayment, ServiceBookingStatus, ServicePaymentStatus, ServicePaymentMethod
|
||||
from .promotion import Promotion
|
||||
from .checkin_checkout import CheckInCheckOut
|
||||
from .banner import Banner
|
||||
@@ -30,6 +31,12 @@ __all__ = [
|
||||
"Payment",
|
||||
"Service",
|
||||
"ServiceUsage",
|
||||
"ServiceBooking",
|
||||
"ServiceBookingItem",
|
||||
"ServicePayment",
|
||||
"ServiceBookingStatus",
|
||||
"ServicePaymentStatus",
|
||||
"ServicePaymentMethod",
|
||||
"Promotion",
|
||||
"CheckInCheckOut",
|
||||
"Banner",
|
||||
|
||||
Binary file not shown.
BIN
Backend/src/models/__pycache__/service_booking.cpython-312.pyc
Normal file
BIN
Backend/src/models/__pycache__/service_booking.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
78
Backend/src/models/service_booking.py
Normal file
78
Backend/src/models/service_booking.py
Normal file
@@ -0,0 +1,78 @@
|
||||
from sqlalchemy import Column, Integer, String, DateTime, Numeric, Text, Enum, ForeignKey
|
||||
from sqlalchemy.orm import relationship
|
||||
from datetime import datetime
|
||||
import enum
|
||||
from ..config.database import Base
|
||||
|
||||
|
||||
class ServiceBookingStatus(str, enum.Enum):
|
||||
pending = "pending"
|
||||
confirmed = "confirmed"
|
||||
completed = "completed"
|
||||
cancelled = "cancelled"
|
||||
|
||||
|
||||
class ServiceBooking(Base):
|
||||
__tablename__ = "service_bookings"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True, autoincrement=True)
|
||||
booking_number = Column(String(50), unique=True, nullable=False, index=True)
|
||||
user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
|
||||
total_amount = Column(Numeric(10, 2), nullable=False)
|
||||
status = Column(Enum(ServiceBookingStatus), nullable=False, default=ServiceBookingStatus.pending)
|
||||
notes = Column(Text, nullable=True)
|
||||
created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
|
||||
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False)
|
||||
|
||||
# Relationships
|
||||
user = relationship("User", back_populates="service_bookings")
|
||||
service_items = relationship("ServiceBookingItem", back_populates="service_booking", cascade="all, delete-orphan")
|
||||
payments = relationship("ServicePayment", back_populates="service_booking", cascade="all, delete-orphan")
|
||||
|
||||
|
||||
class ServiceBookingItem(Base):
|
||||
__tablename__ = "service_booking_items"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True, autoincrement=True)
|
||||
service_booking_id = Column(Integer, ForeignKey("service_bookings.id"), nullable=False)
|
||||
service_id = Column(Integer, ForeignKey("services.id"), nullable=False)
|
||||
quantity = Column(Integer, nullable=False, default=1)
|
||||
unit_price = Column(Numeric(10, 2), nullable=False)
|
||||
total_price = Column(Numeric(10, 2), nullable=False)
|
||||
created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
|
||||
|
||||
# Relationships
|
||||
service_booking = relationship("ServiceBooking", back_populates="service_items")
|
||||
service = relationship("Service")
|
||||
|
||||
|
||||
class ServicePaymentStatus(str, enum.Enum):
|
||||
pending = "pending"
|
||||
completed = "completed"
|
||||
failed = "failed"
|
||||
refunded = "refunded"
|
||||
|
||||
|
||||
class ServicePaymentMethod(str, enum.Enum):
|
||||
cash = "cash"
|
||||
stripe = "stripe"
|
||||
bank_transfer = "bank_transfer"
|
||||
|
||||
|
||||
class ServicePayment(Base):
|
||||
__tablename__ = "service_payments"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True, autoincrement=True)
|
||||
service_booking_id = Column(Integer, ForeignKey("service_bookings.id"), nullable=False)
|
||||
amount = Column(Numeric(10, 2), nullable=False)
|
||||
payment_method = Column(Enum(ServicePaymentMethod), nullable=False)
|
||||
payment_status = Column(Enum(ServicePaymentStatus), nullable=False, default=ServicePaymentStatus.pending)
|
||||
transaction_id = Column(String(100), nullable=True)
|
||||
payment_date = Column(DateTime, nullable=True)
|
||||
notes = Column(Text, nullable=True)
|
||||
created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
|
||||
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False)
|
||||
|
||||
# Relationships
|
||||
service_booking = relationship("ServiceBooking", back_populates="payments")
|
||||
|
||||
@@ -28,4 +28,5 @@ class User(Base):
|
||||
checkouts_processed = relationship("CheckInCheckOut", foreign_keys="CheckInCheckOut.checkout_by", back_populates="checked_out_by")
|
||||
reviews = relationship("Review", back_populates="user")
|
||||
favorites = relationship("Favorite", back_populates="user", cascade="all, delete-orphan")
|
||||
service_bookings = relationship("ServiceBooking", back_populates="user")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user