import { z } from "zod";

const nullableText255 = z
  .string()
  .max(255)
  .nullable()
  .optional();

const nullableDate = z
  .union([z.coerce.date(), z.literal(""), z.null()])
  .transform((value) => (value === "" ? null : value))
  .optional();

const nullableBool = z
  .union([z.boolean(), z.coerce.boolean(), z.null()])
  .optional();

export const alerteFormSchema = z.object({
  id_salarie: z.coerce.number().int().nullable().optional(),
  etablissement: nullableText255,
  nom: nullableText255,
  prenom: nullableText255,
  contrat: nullableText255,
  dateembauche: nullableDate,
  libalerte: nullableText255,
  fait: nullableBool,
  dateajout: nullableDate,
});

export const alerteCreateSchema = alerteFormSchema.extend({
  id_salarie: z.coerce.number().int(),
  libalerte: z
    .string()
    .trim()
    .min(1, "Le libellé de l’alerte est obligatoire")
    .max(255),
});

export const alerteUpdateSchema = alerteFormSchema.partial();