import { z } from "zod";

const PROSTHETIC_TYPES = [
  "metal_porselen",
  "zirkonyum",
  "implant_ustu_zirkonyum",
  "gecici",
  "e_max",
  "diger",
] as const;

const FDI_TOOTH = /^(1[1-8]|2[1-8]|3[1-8]|4[1-8])$/;

export const createJobSchema = z.object({
  labTenantId: z.string().min(1, "Laboratuvar seçin."),
  patientId: z
    .string()
    .trim()
    .optional()
    .transform((v) => (v ? v : undefined)),
  patientCode: z.string().trim().min(1, "Hasta kodu zorunlu.").max(50),
  prostheticType: z.enum(PROSTHETIC_TYPES, { message: "Protez türü seçin." }),
  teeth: z
    .array(z.string().regex(FDI_TOOTH, "Geçersiz diş numarası"))
    .min(1, "En az 1 diş seçin.")
    .max(32, "En fazla 32 diş seçilebilir."),
  color: z
    .string()
    .trim()
    .max(20)
    .optional()
    .transform((v) => (v ? v.toUpperCase() : undefined)),
  description: z
    .string()
    .trim()
    .max(2000)
    .optional()
    .transform((v) => (v ? v : undefined)),
  dueDate: z
    .string()
    .trim()
    .optional()
    .transform((v) => (v ? new Date(v).toISOString() : undefined)),
});

export type CreateJobInput = z.infer<typeof createJobSchema>;
