175 lines
7.2 KiB
TypeScript
175 lines
7.2 KiB
TypeScript
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<typeof trainingSchema>;
|
|
|
|
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,
|
|
});
|