From f1cd73fe5d7008ccf21d428d9d6affb9b0c121b1 Mon Sep 17 00:00:00 2001 From: iamkiddy Date: Fri, 5 Dec 2025 11:23:54 +0000 Subject: [PATCH] Enhance appointment scheduling by including timezone support in the schema and payload. Update the scheduleAppointment function to automatically use the user's timezone if not specified, improving accuracy in appointment scheduling. --- lib/actions/appointments.ts | 5 +++++ lib/schema/appointments.ts | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/actions/appointments.ts b/lib/actions/appointments.ts index bb7ed4e..2721651 100644 --- a/lib/actions/appointments.ts +++ b/lib/actions/appointments.ts @@ -392,9 +392,14 @@ export async function scheduleAppointment(id: string, input: ScheduleAppointment throw new Error("Authentication required."); } + // Get user's timezone + const userTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; + // Build payload with defaults const payload: any = { ...input, + // Always include timezone when scheduling with datetime + ...(input.scheduled_datetime && { timezone: input.timezone || userTimezone }), // Default create_jitsi_meeting to true if not specified create_jitsi_meeting: input.create_jitsi_meeting !== undefined ? input.create_jitsi_meeting : true, }; diff --git a/lib/schema/appointments.ts b/lib/schema/appointments.ts index 990ee09..12abc92 100644 --- a/lib/schema/appointments.ts +++ b/lib/schema/appointments.ts @@ -37,11 +37,12 @@ export type CreateAppointmentInput = z.infer; // Schedule Appointment Schema (Admin only) // Supports two scheduling methods: -// 1. Direct datetime: scheduled_datetime + scheduled_duration +// 1. Direct datetime: scheduled_datetime + scheduled_duration + timezone // 2. Date and slot: date_str + time_slot + scheduled_duration export const scheduleAppointmentSchema = z.object({ scheduled_datetime: z.string().datetime("Invalid datetime format").optional(), scheduled_duration: z.number().int().positive().optional(), + timezone: z.string().optional(), date_str: z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "Date must be in YYYY-MM-DD format").optional(), time_slot: z.enum(["morning", "afternoon", "evening"]).optional(), create_jitsi_meeting: z.boolean().optional(), -- 2.39.5