import { z } from 'zod';

export const updateEmailSettingsSchema = z.object({
  provider: z.enum(['platform', 'gmail', 'outlook', 'yahoo', 'sendgrid', 'smtp']),
  smtpHost: z.string().max(255).optional().nullable(),
  smtpPort: z.coerce.number().int().min(1).max(65535).optional(),
  smtpUser: z.string().max(255).optional().nullable(),
  smtpPassword: z.string().max(512).optional().nullable(),
  fromEmail: z.string().email().optional().nullable(),
  fromName: z.string().max(255).optional().nullable(),
  notificationsEnabled: z.boolean().optional(),
  sendFromUserEmail: z.boolean().optional(),
  sendReminderToGuest: z.boolean().optional(),
  sendReminderToHost: z.boolean().optional(),
  sendFollowUpEnabled: z.boolean().optional(),
  sendPostMeetingSurvey: z.boolean().optional(),
});

export const testEmailSettingsSchema = z.object({
  toEmail: z.string().email().optional(),
});

export const updateMeetingOutcomeSchema = z.object({
  meetingOutcome: z.enum(['held', 'no_show', 'unknown']),
  hostRating: z.coerce.number().int().min(1).max(5).optional().nullable(),
});

export const submitGuestFeedbackSchema = z.object({
  token: z.string().min(10),
  guestRating: z.coerce.number().int().min(1).max(5),
  guestFeedback: z.string().max(2000).optional().nullable(),
});
