import { z } from 'zod'; export const trainingSchema = z.object({ id: z.number().optional(), firstname: z.string().min(1, { message: 'Nombre es requerido' }), lastname: z.string().min(1, { message: 'Apellido es requerido' }), visitDate: z .string() .min(1, { message: 'Fecha y hora de visita es requerida' }), productiveActivity: z .string() .min(1, { message: 'Actividad productiva es requerida' }), financialRequirementDescription: z .string() .min(1, { message: 'Descripción es requerida' }), siturCodeCommune: z .string() .min(1, { message: 'Código SITUR Comuna es requerido' }), communalCouncil: z .string() .min(1, { message: 'Consejo Comunal es requerido' }), siturCodeCommunalCouncil: z .string() .min(1, { message: 'Código SITUR Consejo Comunal es requerido' }), ospName: z.string().min(1, { message: 'Nombre de la OSP es requerido' }), ospAddress: z .string() .min(1, { message: 'Dirección de la OSP es requerida' }), ospRif: z.string().min(1, { message: 'RIF de la OSP es requerido' }), ospType: z.string().min(1, { message: 'Tipo de OSP es requerido' }), currentStatus: z .string() .min(1, { message: 'Estatus actual es requerido' }) .default('ACTIVA'), companyConstitutionYear: z.coerce .number() .min(1900, { message: 'Año inválido' }), producerCount: z.coerce .number() .min(0, { message: 'Cantidad de productores requerida' }), productCount: z.coerce .number() .min(0, { message: 'Cantidad de productos requerida' }) .optional(), productDescription: z .string() .min(1, { message: 'Descripción del producto es requerida' }), installedCapacity: z .string() .min(1, { message: 'Capacidad instalada es requerida' }), operationalCapacity: z .string() .min(1, { message: 'Capacidad operativa es requerida' }), ospResponsibleFullname: z .string() .min(1, { message: 'Nombre del responsable es requerido' }), ospResponsibleCedula: z .string() .min(1, { message: 'Cédula del responsable es requerida' }), ospResponsibleRif: z .string() .min(1, { message: 'RIF del responsable es requerido' }), ospResponsiblePhone: z .string() .min(1, { message: 'Teléfono del responsable es requerido' }), civilState: z.string().min(1, { message: 'Estado civil es requerido' }), familyBurden: z.coerce .number() .min(0, { message: 'Carga familiar requerida' }), numberOfChildren: z.coerce .number() .min(0, { message: 'Número de hijos requerido' }), ospResponsibleEmail: z .string() .email({ message: 'Correo electrónico inválido' }), generalObservations: z.string().optional().default(''), photo1: z.string().optional().nullable(), photo2: z.string().optional().nullable(), photo3: z.string().optional().nullable(), files: z.any().optional(), paralysisReason: z.string().optional().default(''), state: z.number().optional().nullable(), municipality: z.number().optional().nullable(), parish: z.number().optional().nullable(), coor_state: z.number().optional().nullable(), coor_municipality: z.number().optional().nullable(), coor_parish: z.number().optional().nullable(), coor_phone: z.string().optional().nullable(), ecoSector: z.string().min(1, { message: 'Sector económico es requerido' }) // mainProductiveActivity: z.string().optional().nullable(), }); export type TrainingSchema = z.infer; export const trainingApiResponseSchema = z.object({ message: z.string(), data: z.array(trainingSchema), meta: z.object({ page: z.number(), limit: z.number(), totalCount: z.number(), totalPages: z.number(), hasNextPage: z.boolean(), hasPreviousPage: z.boolean(), nextPage: z.number().nullable(), previousPage: z.number().nullable(), }), }); export const TrainingMutate = z.object({ message: z.string(), data: trainingSchema, });