61 lines
3.2 KiB
TypeScript
61 lines
3.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().or(z.date()).transform((val) => new Date(val).toISOString()),
|
|
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" }),
|
|
companyConstitutionYear: z.coerce.number().min(1900, { message: "Año inválido" }),
|
|
producerCount: z.coerce.number().min(1, { message: "Cantidad de productores requerida" }),
|
|
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" }),
|
|
generalObservations: z.string().optional().default(''),
|
|
photo1: z.string().optional().default(''),
|
|
photo2: z.string().optional().default(''),
|
|
photo3: z.string().optional().default(''),
|
|
paralysisReason: z.string().optional().default(''),
|
|
state: z.string().optional().nullable(),
|
|
municipality: z.string().optional().nullable(),
|
|
parish: z.string().optional().nullable(),
|
|
});
|
|
|
|
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,
|
|
});
|