/** * CreatePermisoTrabajoDto - DTO para crear permisos de trabajo * * @module HSE * @rf RF-MAA017-003 */ import { IsString, IsNotEmpty, IsOptional, IsUUID, IsDateString, IsArray, MaxLength, } from 'class-validator'; /** * DTO para crear un permiso de trabajo */ export class CreatePermisoTrabajoDto { /** * ID del tipo de permiso de trabajo */ @IsUUID('4', { message: 'tipoPermisoId debe ser un UUID valido' }) @IsNotEmpty({ message: 'El tipo de permiso es requerido' }) tipoPermisoId: string; /** * ID del fraccionamiento/obra */ @IsUUID('4', { message: 'fraccionamientoId debe ser un UUID valido' }) @IsNotEmpty({ message: 'El fraccionamiento es requerido' }) fraccionamientoId: string; /** * Descripcion del trabajo a realizar * @example 'Soldadura de estructura metalica en nivel 3' */ @IsString() @IsNotEmpty({ message: 'La descripcion del trabajo es requerida' }) descripcionTrabajo: string; /** * Ubicacion especifica del trabajo * @example 'Torre A, Nivel 3, Zona Norte' */ @IsString() @IsNotEmpty({ message: 'La ubicacion es requerida' }) @MaxLength(200) ubicacion: string; /** * Fecha y hora de inicio del permiso (ISO 8601) * @example '2026-02-03T08:00:00Z' */ @IsDateString({}, { message: 'Formato de fecha invalido' }) @IsNotEmpty({ message: 'La fecha de inicio es requerida' }) fechaInicio: string; /** * Fecha y hora de fin del permiso (ISO 8601) * @example '2026-02-03T18:00:00Z' */ @IsDateString({}, { message: 'Formato de fecha invalido' }) @IsNotEmpty({ message: 'La fecha de fin es requerida' }) fechaFin: string; /** * ID del responsable del trabajo */ @IsUUID('4', { message: 'responsableId debe ser un UUID valido' }) @IsNotEmpty({ message: 'El responsable es requerido' }) responsableId: string; /** * Riesgos identificados */ @IsOptional() @IsString() riesgosIdentificados?: string; /** * Medidas de control a implementar */ @IsOptional() @IsString() medidasControl?: string; /** * EPP requerido para el trabajo */ @IsOptional() @IsString() eppRequerido?: string; /** * IDs del personal autorizado */ @IsOptional() @IsArray() @IsUUID('4', { each: true, message: 'Cada ID debe ser un UUID valido' }) personalAutorizado?: string[]; }