import { z } from 'zod'

export const createSpecialStatusSchema = z.object({
  employeeId: z.string().min(1, '员工ID不能为空'),
  type: z.enum([
    'PREGNANCY', 'WORK_INJURY', 'MEDICAL_PERIOD', 'OTHER',
  ], { errorMap: () => ({ message: '无效的特殊状态类型' }) }),
  status: z.enum(['ACTIVE', 'PENDING', 'RESOLVED']).default('ACTIVE'),
  startDate: z.string().optional().nullable(),
  endDate: z.string().optional().nullable(),
  expectedDueDate: z.string().optional().nullable(),
  injuryDate: z.string().optional().nullable(),
  injuryDescription: z.string().max(500).optional().nullable(),
  certificationDate: z.string().optional().nullable(),
  certificationNo: z.string().max(50).optional().nullable(),
  disabilityLevel: z.string().max(20).optional().nullable(),
  assessmentDate: z.string().optional().nullable(),
  medicalMonths: z.number().int().min(1).max(36).optional().nullable(),
  description: z.string().max(500).optional().nullable(),
  attachments: z.array(z.any()).optional().nullable(),
  reminderDate: z.string().optional().nullable(),
})

export const updateSpecialStatusSchema = z.object({
  type: z.enum(['PREGNANCY', 'WORK_INJURY', 'MEDICAL_PERIOD', 'OTHER']).optional(),
  status: z.enum(['ACTIVE', 'PENDING', 'RESOLVED']).optional(),
  startDate: z.string().optional().nullable(),
  endDate: z.string().optional().nullable(),
  expectedDueDate: z.string().optional().nullable(),
  injuryDate: z.string().optional().nullable(),
  injuryDescription: z.string().max(500).optional().nullable(),
  certificationDate: z.string().optional().nullable(),
  certificationNo: z.string().max(50).optional().nullable(),
  disabilityLevel: z.string().max(20).optional().nullable(),
  assessmentDate: z.string().optional().nullable(),
  medicalMonths: z.number().int().min(1).max(36).optional().nullable(),
  description: z.string().max(500).optional().nullable(),
  attachments: z.array(z.any()).optional().nullable(),
  reminderDate: z.string().optional().nullable(),
})
