anexado guardar en minio y cambios generales en la interfaz de osp
This commit is contained in:
@@ -3,42 +3,40 @@ import { z } from 'zod';
|
||||
// 1. Definimos el esquema de un item individual de la lista de productos
|
||||
// Basado en los campos que usaste en ProductActivityList
|
||||
const productItemSchema = z.object({
|
||||
productName: z.string(),
|
||||
description: z.string().optional(),
|
||||
dailyCount: z.coerce.string().or(z.number()).optional(), // Aceptamos string o number por los inputs
|
||||
weeklyCount: z.coerce.string().or(z.number()).optional(),
|
||||
monthlyCount: z.coerce.string().or(z.number()).optional(),
|
||||
description: z.string().optional().nullable(),
|
||||
dailyCount: z.coerce.string().or(z.number()).optional().nullable(),
|
||||
weeklyCount: z.coerce.string().or(z.number()).optional().nullable(),
|
||||
monthlyCount: z.coerce.string().or(z.number()).optional().nullable(),
|
||||
|
||||
// Distribución Interna
|
||||
internalDistributionZone: z.string().optional(),
|
||||
internalQuantity: z.coerce.string().or(z.number()).optional(),
|
||||
internalUnit: z.string().optional(),
|
||||
internalDistributionZone: z.string().optional().nullable(),
|
||||
internalQuantity: z.coerce.string().or(z.number()).optional().nullable(),
|
||||
internalUnit: z.string().optional().nullable(),
|
||||
|
||||
// Distribución Externa
|
||||
externalCountry: z.string().optional(),
|
||||
externalCountry: z.string().optional().nullable(),
|
||||
externalState: z.number().optional().nullable(),
|
||||
externalMunicipality: z.number().optional().nullable(),
|
||||
externalParish: z.number().optional().nullable(),
|
||||
externalCity: z.string().optional(),
|
||||
externalDescription: z.string().optional(),
|
||||
externalQuantity: z.coerce.string().or(z.number()).optional(),
|
||||
externalUnit: z.string().optional(),
|
||||
externalCity: z.string().optional().nullable(),
|
||||
externalDescription: z.string().optional().nullable(),
|
||||
externalQuantity: z.coerce.string().or(z.number()).optional().nullable(),
|
||||
externalUnit: z.string().optional().nullable(),
|
||||
|
||||
// Mano de obra
|
||||
womenCount: z.coerce.string().or(z.number()).optional(),
|
||||
menCount: z.coerce.string().or(z.number()).optional(),
|
||||
womenCount: z.coerce.string().or(z.number()).optional().nullable(),
|
||||
menCount: z.coerce.string().or(z.number()).optional().nullable(),
|
||||
});
|
||||
|
||||
const productionItemSchema = z.object({
|
||||
rawMaterial: z.string(),
|
||||
supplyType: z.string().optional(),
|
||||
quantity: z.coerce.string().or(z.number()).optional(), // Aceptamos string o number por los inputs
|
||||
unit: z.string().optional(),
|
||||
supplyType: z.string().optional().nullable(),
|
||||
quantity: z.coerce.string().or(z.number()).optional().nullable(),
|
||||
unit: z.string().min(1, { message: 'Unidad es requerida' }).nullable(),
|
||||
});
|
||||
|
||||
const equipmentItemSchema = z.object({
|
||||
machine: z.string(),
|
||||
quantity: z.coerce.string().or(z.number()).optional(), // Aceptamos string o number por los inputs
|
||||
machine: z.string().nullable(),
|
||||
quantity: z.coerce.string().or(z.number()).optional().nullable(),
|
||||
});
|
||||
|
||||
export const trainingSchema = z.object({
|
||||
@@ -46,38 +44,47 @@ 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' }),
|
||||
coorPhone: z.string().optional().nullable(),
|
||||
coorPhone: z
|
||||
.string()
|
||||
.optional()
|
||||
.nullable()
|
||||
.refine((val) => !val || /^(04|02)\d{9}$/.test(val), {
|
||||
message: 'El teléfono debe tener 11 dígitos y comenzar con 04 o 02',
|
||||
}),
|
||||
visitDate: z
|
||||
.string()
|
||||
.min(1, { message: 'Fecha y hora de visita es requerida' }),
|
||||
|
||||
//Datos de la organización socioproductiva (OSP)
|
||||
ospType: z.string().min(1, { message: 'Tipo de OSP es requerido' }),
|
||||
ecoSector: z.string().optional().or(z.literal('')),
|
||||
productiveSector: z.string().optional().or(z.literal('')),
|
||||
centralProductiveActivity: z.string().optional().or(z.literal('')),
|
||||
mainProductiveActivity: z.string().optional().or(z.literal('')),
|
||||
ecoSector: z.string().optional().or(z.literal('')).nullable(),
|
||||
productiveSector: z.string().optional().or(z.literal('')).nullable(),
|
||||
centralProductiveActivity: z.string().optional().or(z.literal('')).nullable(),
|
||||
mainProductiveActivity: z.string().optional().or(z.literal('')).nullable(),
|
||||
productiveActivity: z
|
||||
.string()
|
||||
.min(1, { message: 'Actividad productiva es requerida' }),
|
||||
ospRif: z.string().optional().or(z.literal('')),
|
||||
ospName: z.string().optional().or(z.literal('')),
|
||||
ospRif: z.string().optional().or(z.literal('')).nullable(),
|
||||
ospName: z.string().optional().or(z.literal('')).nullable(),
|
||||
companyConstitutionYear: z.coerce
|
||||
.number()
|
||||
.min(1900, { message: 'Año inválido' }),
|
||||
.min(1900, { message: 'Año inválido' })
|
||||
.nullable(),
|
||||
currentStatus: z
|
||||
.string()
|
||||
.min(1, { message: 'Estatus actual es requerido' })
|
||||
.default('ACTIVA'),
|
||||
infrastructureMt2: z.string().optional().or(z.literal('')),
|
||||
infrastructureMt2: z.string().optional().or(z.literal('')).nullable(),
|
||||
hasTransport: z
|
||||
.preprocess((val) => val === 'true' || val === true, z.boolean())
|
||||
.optional(),
|
||||
structureType: z.string().optional().or(z.literal('')),
|
||||
.optional()
|
||||
.nullable(),
|
||||
structureType: z.string().optional().or(z.literal('')).nullable(),
|
||||
isOpenSpace: z
|
||||
.preprocess((val) => val === 'true' || val === true, z.boolean())
|
||||
.optional(),
|
||||
paralysisReason: z.string().optional().default(''),
|
||||
.optional()
|
||||
.nullable(),
|
||||
paralysisReason: z.string().optional().nullable(),
|
||||
|
||||
//Datos del Equipamiento
|
||||
equipmentList: z.array(equipmentItemSchema).optional().default([]),
|
||||
@@ -92,29 +99,47 @@ export const trainingSchema = z.object({
|
||||
ospAddress: z
|
||||
.string()
|
||||
.min(1, { message: 'Dirección de la OSP es requerida' }),
|
||||
ospGoogleMapsLink: z.string().optional().or(z.literal('')),
|
||||
communeName: z.string().optional().or(z.literal('')),
|
||||
siturCodeCommune: z.string().optional().or(z.literal('')),
|
||||
communeRif: z.string().optional().or(z.literal('')),
|
||||
communeSpokespersonName: z.string().optional().or(z.literal('')),
|
||||
communeSpokespersonPhone: z.string().optional().or(z.literal('')),
|
||||
ospGoogleMapsLink: z.string().optional().or(z.literal('')).nullable(),
|
||||
communeName: z.string().optional().or(z.literal('')).nullable(),
|
||||
siturCodeCommune: z.string().optional().or(z.literal('')).nullable(),
|
||||
communeRif: z.string().optional().or(z.literal('')).nullable(),
|
||||
communeSpokespersonName: z.string().optional().or(z.literal('')).nullable(),
|
||||
communeSpokespersonPhone: z
|
||||
.string()
|
||||
.optional()
|
||||
.or(z.literal(''))
|
||||
.refine((val) => !val || /^(04|02)\d{9}$/.test(val), {
|
||||
message: 'El teléfono debe tener 11 dígitos y comenzar con 04 o 02',
|
||||
}),
|
||||
communeEmail: z
|
||||
.string()
|
||||
.email({ message: 'Correo electrónico de la Comuna inválido' })
|
||||
.optional()
|
||||
.or(z.literal('')),
|
||||
.or(z.literal(''))
|
||||
.nullable(),
|
||||
communalCouncil: z
|
||||
.string()
|
||||
.min(1, { message: 'Consejo Comunal es requerido' }),
|
||||
siturCodeCommunalCouncil: z.string().optional().or(z.literal('')),
|
||||
communalCouncilRif: z.string().optional().or(z.literal('')),
|
||||
communalCouncilSpokespersonName: z.string().optional().or(z.literal('')),
|
||||
communalCouncilSpokespersonPhone: z.string().optional().or(z.literal('')),
|
||||
siturCodeCommunalCouncil: z.string().optional().or(z.literal('')).nullable(),
|
||||
communalCouncilRif: z.string().optional().or(z.literal('')).nullable(),
|
||||
communalCouncilSpokespersonName: z
|
||||
.string()
|
||||
.optional()
|
||||
.or(z.literal(''))
|
||||
.nullable(),
|
||||
communalCouncilSpokespersonPhone: z
|
||||
.string()
|
||||
.optional()
|
||||
.or(z.literal(''))
|
||||
.refine((val) => !val || /^(04|02)\d{9}$/.test(val), {
|
||||
message: 'El teléfono debe tener 11 dígitos y comenzar con 04 o 02',
|
||||
}),
|
||||
communalCouncilEmail: z
|
||||
.string()
|
||||
.email({ message: 'Correo electrónico del Consejo Comunal inválido' })
|
||||
.optional()
|
||||
.or(z.literal('')),
|
||||
.or(z.literal(''))
|
||||
.nullable(),
|
||||
|
||||
//Datos del Responsable OSP
|
||||
ospResponsibleCedula: z
|
||||
@@ -123,25 +148,26 @@ export const trainingSchema = z.object({
|
||||
ospResponsibleFullname: z
|
||||
.string()
|
||||
.min(1, { message: 'Nombre del responsable es requerido' }),
|
||||
ospResponsibleRif: z
|
||||
.string()
|
||||
.min(1, { message: 'RIF del responsable es requerido' }),
|
||||
civilState: z.string().min(1, { message: 'Estado civil es requerido' }),
|
||||
ospResponsibleRif: z.string().optional().nullable(),
|
||||
civilState: z.string().optional().nullable(),
|
||||
ospResponsiblePhone: z
|
||||
.string()
|
||||
.min(1, { message: 'Teléfono del responsable es requerido' }),
|
||||
.min(1, { message: 'Teléfono del responsable es requerido' })
|
||||
.regex(/^(04|02)\d{9}$/, {
|
||||
message: 'El teléfono debe tener 11 dígitos y comenzar con 04 o 02',
|
||||
}),
|
||||
ospResponsibleEmail: z
|
||||
.string()
|
||||
.email({ message: 'Correo electrónico inválido' }),
|
||||
familyBurden: z.coerce
|
||||
.number()
|
||||
.min(0, { message: 'Carga familiar requerida' }),
|
||||
numberOfChildren: z.coerce
|
||||
.number()
|
||||
.min(0, { message: 'Número de hijos requerido' }),
|
||||
.email({ message: 'Correo electrónico inválido' })
|
||||
.optional()
|
||||
.or(z.literal(''))
|
||||
.nullable(),
|
||||
|
||||
familyBurden: z.coerce.number().optional(),
|
||||
numberOfChildren: z.coerce.number().optional(),
|
||||
|
||||
//Datos adicionales
|
||||
generalObservations: z.string().optional().default(''),
|
||||
generalObservations: z.string().optional().nullable(),
|
||||
|
||||
//IMAGENES
|
||||
files: z.any().optional(),
|
||||
@@ -157,6 +183,9 @@ export const trainingSchema = z.object({
|
||||
photo2: z.string().optional().nullable(),
|
||||
photo3: z.string().optional().nullable(),
|
||||
createdBy: z.number().optional().nullable(),
|
||||
updatedBy: z.number().optional().nullable(),
|
||||
createdAt: z.string().optional().nullable(),
|
||||
updatedAt: z.string().optional().nullable(),
|
||||
});
|
||||
|
||||
export type TrainingSchema = z.infer<typeof trainingSchema>;
|
||||
|
||||
Reference in New Issue
Block a user