import { z } from 'zod';

const weeklyRuleSchema = z.object({
  dayOfWeek: z.number().int().min(0).max(6),
  startTime: z.string().regex(/^\d{2}:\d{2}$/),
  endTime: z.string().regex(/^\d{2}:\d{2}$/),
  locationId: z.string().uuid().nullable().optional(),
});

const dateOverrideSchema = z.object({
  date: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
  available: z.boolean(),
  intervals: z
    .array(z.object({ startTime: z.string(), endTime: z.string() }))
    .optional(),
});

export const updateAvailabilitySchema = z.object({
  timezone: z.string().min(1).max(64).optional(),
  minNoticeHours: z.number().int().min(0).optional(),
  maxAdvanceDays: z.number().int().min(1).max(365).optional(),
  weeklyRules: z.array(weeklyRuleSchema).optional(),
  dateOverrides: z.array(dateOverrideSchema).optional(),
});

export const copyAvailabilitySchema = z.object({
  sourceEventTypeId: z.string().uuid(),
});

export const slotsQuerySchema = z.object({
  from: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
  to: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
  timezone: z.string().min(1),
});
