- Construction: 6 DTOs (create/update/response proyecto, fraccionamiento) - Finance: 5 DTOs (create/update/response bank-account, accounting-entry) - HSE: 7 DTOs (incidente, capacitacion, permiso-trabajo, epp-asignacion) All DTOs use class-validator for validation. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
105 lines
2.3 KiB
TypeScript
105 lines
2.3 KiB
TypeScript
/**
|
|
* 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[];
|
|
}
|