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' }), communeName: z .string() .min(1, { message: 'Nombre de la Comuna es requerido' }), communeRif: z .string() .min(1, { message: 'RIF de la Comuna es requerido' }), communeSpokespersonName: z .string() .min(1, { message: 'Nombre del Vocero de la Comuna es requerido' }), communeSpokespersonCedula: z .string() .min(1, { message: 'Cédula del Vocero de la Comuna es requerida' }), communeSpokespersonRif: z .string() .min(1, { message: 'RIF del Vocero de la Comuna es requerido' }), communeSpokespersonPhone: z .string() .min(1, { message: 'Teléfono del Vocero de la Comuna es requerido' }), communeEmail: z.string().email({ message: 'Correo electrónico de la Comuna inválido' }), communalCouncil: z .string() .min(1, { message: 'Consejo Comunal es requerido' }), siturCodeCommunalCouncil: z .string() .min(1, { message: 'Código SITUR Consejo Comunal es requerido' }), communalCouncilRif: z .string() .min(1, { message: 'RIF del Consejo Comunal es requerido' }), communalCouncilSpokespersonName: z .string() .min(1, { message: 'Nombre del Vocero del Consejo Comunal es requerido' }), communalCouncilSpokespersonCedula: z .string() .min(1, { message: 'Cédula del Vocero del Consejo Comunal es requerida' }), communalCouncilSpokespersonRif: z .string() .min(1, { message: 'RIF del Vocero del Consejo Comunal es requerido' }), communalCouncilSpokespersonPhone: z .string() .min(1, { message: 'Teléfono del Vocero del Consejo Comunal es requerido' }), communalCouncilEmail: z .string() .email({ message: 'Correo electrónico del Consejo Comunal inválido' }), ospGoogleMapsLink: z .string() .min(1, { message: 'Enlace de Google Maps 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' }), prodDescriptionInternal: 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(), coorState: z.number().optional().nullable(), coorMunicipality: z.number().optional().nullable(), coorParish: z.number().optional().nullable(), coorPhone: z.string().optional().nullable(), ecoSector: z.string().min(1, { message: 'Sector económico es requerido' }), productiveSector: z.string().min(1, { message: 'Sector productivo es requerido' }), centralProductiveActivity: z.string().min(1, { message: 'Actividad productiva central es requerida' }), mainProductiveActivity: z.string().min(1, { message: 'Actividad productiva principal es requerida' }), typesOfEquipment: z.string().min(1, { message: 'Tipo de equipo es requerido' }), equipmentCount: z.coerce.number().min(0, { message: 'Cantidad de equipo requerida' }), equipmentDescription: z.string().min(1, { message: 'Descripción del equipo es requerida' }), rawMaterial: z.string().min(1, { message: 'Material bruto es requerido' }), materialType: z.string().min(1, { message: 'Tipo de material es requerido' }), rawMaterialCount: z.coerce.number().min(0, { message: 'Cantidad de material bruto requerida' }), productCountDaily: z.coerce.number().min(0, { message: 'Cantidad diaria de productos requerida' }), productCountWeekly: z.coerce.number().min(0, { message: 'Cantidad semanal de productos requerida' }), productCountMonthly: z.coerce.number().min(0, { message: 'Cantidad mensual de productos requerida' }), internalCount: z.coerce.number().min(0, { message: 'Cantidad interna requerida' }), externalCount: z.coerce.number().min(0, { message: 'Cantidad externa requerida' }), prodDescriptionExternal: z.string().min(1, { message: 'Descripción del producto es requerida' }), country: z.string().min(1, { message: 'País es requerido' }), city: z.string().min(1, { message: 'Ciudad es requerida' }), menCount: z.coerce.number().min(0, { message: 'Cantidad de hombres requerida' }), womenCount: z.coerce.number().min(0, { message: 'Cantidad de mujeres requerida' }), }); 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, });