import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; import { IsIn, IsOptional, IsString, IsUUID } from 'class-validator'; const STATUS_ACTIONS = [ 'SUBMIT', 'SEND_QUOTATION', 'APPROVE_QUOTATION', 'REJECT_QUOTATION', 'APPROVE_STEP', 'APPROVE', 'CUSTOMER_SIGN', 'MARK_FULLY_EXECUTED', 'MARK_PAID', 'START_TRANSIT', 'COMPLETE', 'REJECT', 'CANCEL', ] as const; export { STATUS_ACTIONS }; export class UpdateStatusDto { @ApiProperty({ enum: STATUS_ACTIONS }) @IsIn([...STATUS_ACTIONS]) action!: string; @ApiPropertyOptional({ format: 'uuid', description: 'Staff/director/CEO actor' }) @IsOptional() @IsUUID() actorId?: string; @ApiPropertyOptional({ description: 'Required role for APPROVE_STEP (LINE_STAFF, DIRECTOR, CEO)' }) @IsOptional() @IsString() requiredRole?: string; @ApiPropertyOptional({ description: 'Required for REJECT, REJECT_QUOTATION, CANCEL' }) @IsOptional() @IsString() reason?: string; }