// File: src/modules/rfa/dto/create-rfa.dto.ts import { ApiProperty } from '@nestjs/swagger'; import { IsArray, IsDateString, IsInt, IsNotEmpty, IsObject, IsOptional, IsString, } from 'class-validator'; export class CreateRfaDto { @ApiProperty({ description: 'ID ของโครงการ', example: 1 }) @IsInt() @IsNotEmpty() projectId!: number; @ApiProperty({ description: 'ID ของประเภท RFA', example: 1 }) @IsInt() @IsNotEmpty() rfaTypeId!: number; @ApiProperty({ description: 'ID ของสาขางาน (Discipline) ตาม Req 6B', example: 1, }) @IsInt() @IsOptional() // Optional ไว้ก่อนเผื่อบางโครงการไม่บังคับ disciplineId?: number; @ApiProperty({ description: 'หัวข้อเอกสาร', example: 'Submission of Shop Drawing for Building A', }) @IsString() @IsNotEmpty() subject!: string; @ApiProperty({ description: 'Body', required: false }) @IsString() @IsOptional() body?: string; @ApiProperty({ description: 'Remarks', required: false }) @IsString() @IsOptional() remarks?: string; @ApiProperty({ description: 'Due Date', required: false }) @IsDateString() @IsOptional() dueDate?: string; @ApiProperty({ description: 'รายละเอียดเพิ่มเติม', required: false }) @IsString() @IsOptional() description?: string; @ApiProperty({ description: 'วันที่ในเอกสาร', required: false }) @IsDateString() @IsOptional() documentDate?: string; @ApiProperty({ description: 'ข้อมูล Dynamic Details (JSON)', required: false, }) @IsObject() @IsOptional() details?: Record; @ApiProperty({ description: 'รายการ Shop Drawing Revisions ที่แนบมาด้วย', required: false, type: [Number], }) @IsArray() @IsOptional() shopDrawingRevisionIds?: number[]; }