feat: add recurring booking management functionality
- Implemented API endpoints for listing and updating recurring booking groups. - Added handlers for listing and updating recurring groups in the backend. - Created frontend components for displaying and editing recurring bookings. - Enhanced booking provider to manage recurring groups and their states. - Updated API client to include new methods for recurring bookings. - Introduced new validation schemas for updating recurring groups. - Added UI elements for managing recurring bookings in the booking interface.
This commit is contained in:
@@ -90,6 +90,31 @@ export const recurringBookingGroupSchema = z.object({
|
||||
updatedAt: z.string().datetime(),
|
||||
});
|
||||
|
||||
export const updateRecurringGroupSchema = z.object({
|
||||
courtId: z.uuid('El courtId debe ser un UUID valido.').optional(),
|
||||
dayOfWeek: z
|
||||
.enum(['MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY'])
|
||||
.optional(),
|
||||
startTime: z.string().regex(TIME_REGEX, 'La hora debe tener formato HH:mm.').optional(),
|
||||
customerName: z
|
||||
.string()
|
||||
.trim()
|
||||
.min(2, 'El nombre debe tener al menos 2 caracteres.')
|
||||
.max(120, 'El nombre no puede superar los 120 caracteres.')
|
||||
.optional(),
|
||||
customerPhone: z
|
||||
.string()
|
||||
.trim()
|
||||
.min(6, 'El telefono debe tener al menos 6 caracteres.')
|
||||
.max(30, 'El telefono no puede superar los 30 caracteres.')
|
||||
.optional(),
|
||||
customerEmail: z.string().email('El email ingresado no es valido.').or(z.literal('')).optional(),
|
||||
});
|
||||
|
||||
export const listRecurringGroupsResponseSchema = z.object({
|
||||
groups: z.array(recurringBookingGroupSchema),
|
||||
});
|
||||
|
||||
export type BookingStatus = z.infer<typeof bookingStatusSchema>;
|
||||
export type RecurringGroupStatus = z.infer<typeof recurringGroupStatusSchema>;
|
||||
export type AdminBookingSport = z.infer<typeof adminBookingSportSchema>;
|
||||
@@ -100,3 +125,5 @@ export type CreateAdminBookingInput = z.infer<typeof createAdminBookingSchema>;
|
||||
export type CreateRecurringBookingInput = z.infer<typeof createRecurringBookingSchema>;
|
||||
export type RecurringBookingGroup = z.infer<typeof recurringBookingGroupSchema>;
|
||||
export type UpdateAdminBookingStatusInput = z.infer<typeof updateAdminBookingStatusSchema>;
|
||||
export type UpdateRecurringGroupInput = z.infer<typeof updateRecurringGroupSchema>;
|
||||
export type ListRecurringGroupsResponse = z.infer<typeof listRecurringGroupsResponseSchema>;
|
||||
|
||||
@@ -79,9 +79,11 @@ export {
|
||||
createRecurringBookingSchema,
|
||||
listAdminBookingsQuerySchema,
|
||||
listAdminBookingsResponseSchema,
|
||||
listRecurringGroupsResponseSchema,
|
||||
recurringBookingGroupSchema,
|
||||
recurringGroupStatusSchema,
|
||||
updateAdminBookingStatusSchema,
|
||||
updateRecurringGroupSchema,
|
||||
} from './admin-booking';
|
||||
export type {
|
||||
AdminBooking,
|
||||
@@ -91,9 +93,11 @@ export type {
|
||||
CreateRecurringBookingInput,
|
||||
ListAdminBookingsQuery,
|
||||
ListAdminBookingsResponse,
|
||||
ListRecurringGroupsResponse,
|
||||
RecurringBookingGroup,
|
||||
RecurringGroupStatus,
|
||||
UpdateAdminBookingStatusInput,
|
||||
UpdateRecurringGroupInput,
|
||||
} from './admin-booking';
|
||||
export {
|
||||
createPublicBookingSchema,
|
||||
|
||||
Reference in New Issue
Block a user