import { z } from 'zod'

const PrbSchema = z.object({
  sepStatus: z.string({
    required_error: 'Mohon isi status SEP',
  }).default('SEP Internal'),
  unit_code: z.string({
    required_error: 'Mohon isi Unit',
  }),
  specialist_code: z.string({
    required_error: 'Mohon isi Spesialis',
  }),
  subspecialist_code: z.string({
    required_error: 'Mohon isi Sub Spesialis',
  }),
  doctor_code: z.string({
    required_error: 'Mohon isi DPJP',
  }),
  encounter_code: z.string().optional(),
  date: z.string({
    required_error: 'Mohon lengkapi Tanggal Kontrol',
  })
    .refine(
      (date) => {
        // Jika kosong, return false untuk required validation
        if (!date || date.trim() === '') return false

        // Jika ada isi, validasi format tanggal
        try {
          const dateObj = new Date(date)
          // Cek apakah tanggal valid dan tahun >= 1900
          return !isNaN(dateObj.getTime()) && dateObj.getFullYear() >= 1900
        } catch {
          return false
        }
      },
      {
        message: 'Mohon lengkapi Tanggal Kontrol dengan format yang valid',
      },
    )
    .transform((dateStr) => new Date(dateStr).toISOString()),
})

type PrbFormData = z.infer<typeof PrbSchema>

export { PrbSchema }
export type { PrbFormData }
