import { z } from "zod";
import { nullableText150, nullableText5000 } from "./employes";

export const absenceListQuerySchema = z.object({
  limit: z.coerce.number().int().min(1).max(100).optional().default(20),
  offset: z.coerce.number().int().min(0).optional().default(0),
});

const nullableInt = () => z.coerce.number().int().nullable().optional();
const nullableNum = () => z.coerce.number().nullable().optional();
const nullableBool = () => z.boolean().nullable().optional();
const nullableDate = () => z.union([z.coerce.date().nullable(), z.string().nullable()]).optional();

  export const absenceFormSchema = z.object({
    num_salarie: nullableInt(),
    typeabsence: nullableText150,
    datedu: nullableDate(),
    dateau: nullableDate(),
    nbheures: nullableNum(),
    commentaire: nullableText5000,
    revenu: nullableBool(),
    idabsences: nullableInt(),
    date_creation: nullableDate(),
  });

  export const absenceCreateSchema = absenceFormSchema.extend({
    num_salarie: z.coerce.number().int(),
  });

export const absenceUpdateSchema = absenceFormSchema.partial();

export type absenceCreateInput = z.infer<typeof absenceCreateSchema>;
export type absenceUpdateInput = z.infer<typeof absenceUpdateSchema>;