feat: add group waitlist functionality
- Introduced GroupWaitlistEntry model in Prisma schema to manage waitlisted users for groups. - Implemented API route to add users to the group waitlist with validation. - Enhanced attendee creation logic to handle group capacity and waitlisting scenarios. - Added new problem builders for handling waitlist-related errors. - Updated frontend to support waitlist interactions, including modals for capacity warnings. - Created tests for waitlist functionality, ensuring proper handling of full groups and existing waitlist entries.
This commit is contained in:
@@ -28,4 +28,26 @@ export const WaitlistListSchema = z.object({
|
||||
data: z.array(WaitlistEntryDtoSchema),
|
||||
pagination: paginationSchema,
|
||||
});
|
||||
export type WaitlistList = z.output<typeof WaitlistListSchema>;
|
||||
export type WaitlistList = z.output<typeof WaitlistListSchema>;
|
||||
|
||||
export const GroupWaitlistEntryDtoSchema = z.object({
|
||||
id: z.string(),
|
||||
groupId: z.string(),
|
||||
fullName: z.string(),
|
||||
phone: z.string(),
|
||||
email: z.string().nullable(),
|
||||
notes: z.string().nullable(),
|
||||
status: waitlistStatusSchema,
|
||||
createdAt: isoDateTimeSchema,
|
||||
updatedAt: isoDateTimeSchema,
|
||||
});
|
||||
export type GroupWaitlistEntryDto = z.output<typeof GroupWaitlistEntryDtoSchema>;
|
||||
|
||||
export const CreateGroupWaitlistEntrySchema = z.object({
|
||||
firstName: z.string().trim().min(1, 'El nombre es obligatorio'),
|
||||
lastName: z.string().trim().optional().default(''),
|
||||
phone: z.string().trim().min(6, 'Ingresa un número de teléfono válido'),
|
||||
email: z.string().trim().email('Email inválido').optional().or(z.literal('')),
|
||||
notes: z.string().trim().optional(),
|
||||
});
|
||||
export type CreateGroupWaitlistEntry = z.output<typeof CreateGroupWaitlistEntrySchema>;
|
||||
Reference in New Issue
Block a user