Refactor booking creation to support one-way and round-trip bookings with enhanced DTOs and service methods

This commit is contained in:
Stephanos A
2026-06-16 18:44:09 +03:00
parent 421e30dc6c
commit eb60fc340d
4 changed files with 414 additions and 127 deletions

View File

@@ -494,38 +494,44 @@ model FareRule {
}
model Booking {
id String @id @default(uuid())
bookingRef String @unique
passengerId String
scheduleId String
status BookingStatus @default(DRAFT)
currency String @default("ETB")
totalMinor Int
adultCount Int @default(1)
childCount Int @default(0)
displayCurrency Currency?
displayTotalMinor Int?
bookingType String @default("ONE_WAY")
contactEmail String?
contactPhone String?
userAgent String?
source String @default("WEB")
promoCode String?
paidAt DateTime?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
passenger Passenger @relation(fields: [passengerId], references: [id])
schedule TrainSchedule @relation(fields: [scheduleId], references: [id])
seats BookingSeat[]
paymentIntent PaymentIntent?
ticket Ticket?
foodOrders FoodOrder[]
agentBooking AgentBooking?
modifications BookingModification[]
cancellation BookingCancellation?
baggage BaggageBooking[]
id String @id @default(uuid())
bookingRef String @unique
passengerId String
scheduleId String
bookingType String @default("ONE_WAY")
status BookingStatus @default(DRAFT)
currency String @default("ETB")
totalMinor Int
adultCount Int @default(1)
childCount Int @default(0)
displayCurrency Currency?
displayTotalMinor Int?
returnScheduleId String?
returnOriginStationId String?
returnDestinationStationId String?
returnHoldId String?
returnSeatClassId String?
contactEmail String?
contactPhone String?
userAgent String?
source String @default("WEB")
promoCode String?
paidAt DateTime?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
passenger Passenger @relation(fields: [passengerId], references: [id])
schedule TrainSchedule @relation(fields: [scheduleId], references: [id])
seats BookingSeat[]
paymentIntent PaymentIntent?
ticket Ticket?
foodOrders FoodOrder[]
agentBooking AgentBooking?
modifications BookingModification[]
cancellation BookingCancellation?
baggage BaggageBooking[]
@@index([passengerId, status])
@@index([bookingType])
@@schema("passenger")
}