feat: add price field to CourtBooking model and related schemas
- Added `price` field to `CourtBookingScalarFieldEnum` in `prismaNamespace.ts` and `prismaNamespaceBrowser.ts`. - Updated `CourtBooking` model to include average and sum aggregations for `price`. - Enhanced input types and aggregate input types to support `price`. - Modified `public-booking.service.ts` to calculate and return price information for bookings. - Updated frontend components to display price information in booking confirmation and selection pages. - Introduced `priceRangeSchema` in API contract to validate price ranges.
This commit is contained in:
@@ -21,6 +21,11 @@ export const publicBookingSlotSchema = z.object({
|
||||
endTime: z.string().regex(TIME_REGEX),
|
||||
})
|
||||
|
||||
export const priceRangeSchema = z.object({
|
||||
min: z.number(),
|
||||
max: z.number(),
|
||||
})
|
||||
|
||||
export const publicAvailabilityCourtSchema = z.object({
|
||||
courtId: z.uuid(),
|
||||
courtName: z.string(),
|
||||
@@ -28,6 +33,7 @@ export const publicAvailabilityCourtSchema = z.object({
|
||||
slotDurationMinutes: z.int().positive(),
|
||||
availabilityDay: dayOfWeekSchema,
|
||||
availableSlots: z.array(publicBookingSlotSchema),
|
||||
price: priceRangeSchema.optional(),
|
||||
})
|
||||
|
||||
export const publicAvailabilityResponseSchema = z.object({
|
||||
@@ -73,6 +79,7 @@ export const publicBookingSchema = z.object({
|
||||
customerName: z.string(),
|
||||
customerPhone: z.string(),
|
||||
status: z.enum(['CONFIRMED', 'CANCELLED', 'COMPLETED']),
|
||||
price: z.number(),
|
||||
createdAt: z.string().datetime(),
|
||||
})
|
||||
|
||||
@@ -86,12 +93,14 @@ export const publicBookingConfirmationSchema = z.object({
|
||||
courtName: z.string(),
|
||||
sport: publicBookingSportSchema,
|
||||
status: z.enum(['CONFIRMED', 'CANCELLED', 'COMPLETED']),
|
||||
price: z.number(),
|
||||
createdAt: z.string().datetime(),
|
||||
})
|
||||
|
||||
export type PublicAvailabilityQuery = z.infer<typeof publicAvailabilityQuerySchema>
|
||||
export type PublicBookingSport = z.infer<typeof publicBookingSportSchema>
|
||||
export type PublicBookingSlot = z.infer<typeof publicBookingSlotSchema>
|
||||
export type PriceRange = z.infer<typeof priceRangeSchema>
|
||||
export type PublicAvailabilityCourt = z.infer<typeof publicAvailabilityCourtSchema>
|
||||
export type PublicAvailabilityResponse = z.infer<typeof publicAvailabilityResponseSchema>
|
||||
export type CreatePublicBookingInput = z.infer<typeof createPublicBookingSchema>
|
||||
|
||||
Reference in New Issue
Block a user