﻿import { z } from "zod";

export const nullableText50 = z.string().trim().max(50).nullable().optional();
export const nullableText150 = z.string().trim().max(150).nullable().optional();
export const nullableText255 = z.string().trim().max(255).nullable().optional();
export const nullableText5000 = z.string().trim().max(5000).nullable().optional();

const employeFormSchema = z.object({
  TIT: nullableText150,
  NSA: nullableText150,
  NJF: nullableText150,
  PRE: nullableText150,

  ADR: nullableText255,
  ADRCPAM: nullableText255,
  COP: z.string().trim().max(50).nullable().optional(),
  VIL: nullableText150,

  TEL: z.string().trim().max(50).nullable().optional(),
  GSM: z.string().trim().max(50).nullable().optional(),

  DAN: z.coerce.date().nullable().optional(),
  LNA: nullableText150,
  NSS: z.string().trim().max(100).nullable().optional(),
  NAT: z.string().trim().max(100).nullable().optional(),

  NCJ: nullableText150,
  EXJ: z.coerce.date().nullable().optional(),

  PLS: nullableText150,
  STS: z.string().trim().max(100).nullable().optional(),

  REF: nullableText150,
  BNQ: nullableText150,
  GUI: nullableText150,
  NCP: z.string().trim().max(50).nullable().optional(),
  RIB: z.string().trim().max(34).nullable().optional(),
  NBQ: nullableText150,
  NTC: nullableText150,

  ARH: nullableText150,

  Matricule: z.coerce.number().int().nullable().optional(),

  Cotorep: z.coerce.boolean().nullable().optional(),
  FinCotorep: z.coerce.date().nullable().optional(),

  Commentaire: nullableText5000,

  DateEntreeGroupe: z.coerce.date().nullable().optional(),

  Mutuelle: z.coerce.number().int().nullable().optional(),

  TailleHaut: z.string().trim().max(50).nullable().optional(),
  TailleBas: z.string().trim().max(50).nullable().optional(),
  Pointure: z.string().trim().max(50).nullable().optional(),

  Date_Prochain_Rappel: z.coerce.date().nullable().optional(),
  Souhaite_Vaccination: z.coerce.boolean().nullable().optional(),

  TelAppelUrgence1: z.string().trim().max(50).nullable().optional(),
  PersonnelAppelUrgence1: nullableText150,

  TelAppelUrgence2: z.string().trim().max(50).nullable().optional(),
  PersonnelAppelUrgence2: nullableText150,

  TelAppelUrgence3: z.string().trim().max(50).nullable().optional(),
  PersonnelAppelUrgence3: nullableText150,

  TypeCS: nullableText150,

  IBAN: z.string().trim().max(34).nullable().optional(),
  BIC: z.string().trim().max(20).nullable().optional(),

  DateFinCMU: z.coerce.date().nullable().optional(),

  AnneeDerogationMutuelle: z.coerce.number().int().nullable().optional(),
  MotifDerogationMutuelle: nullableText255,
  DateFinDerogationMutuelle: z.coerce.date().nullable().optional(),

  EmailPerso: z.string().trim().max(150).nullable().optional(),
  EmailE2e: z.string().trim().max(150).nullable().optional(),

  Agrement_Num: z.string().trim().max(150).nullable().optional(),
  Agrement_Du: z.coerce.date().nullable().optional(),
  Agrement_Au: z.coerce.date().nullable().optional(),

  IdSalarie_Cap22_UserId: z.string().trim().max(150).nullable().optional(),
  IdSalarie_Cap22_Username: z.string().trim().max(150).nullable().optional(),

  Actif: z.coerce.boolean().nullable().optional(),
});

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

export const employeCreateSchema = employeFormSchema;

export const employeUpdateSchema = employeFormSchema.partial();

export type EmployeCreateInput = z.infer<typeof employeCreateSchema>;
export type EmployeUpdateInput = z.infer<typeof employeUpdateSchema>;
