import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; import { IsEnum, IsNotEmpty, IsString } from 'class-validator'; import { CarAngle } from 'src/Types&Enums/claim-request-management/required-document-type.enum'; /** * V2 DTO for capturing car angle or damaged part */ export class CapturePartV2Dto { @ApiProperty({ description: 'Type of capture: angle or part', example: 'angle', enum: ['angle', 'part'], }) @IsNotEmpty({ message: 'Capture type is required' }) @IsEnum(['angle', 'part'], { message: 'Capture type must be either "angle" or "part"', }) captureType: 'angle' | 'part'; @ApiProperty({ description: 'Key of the angle or part being captured', example: 'front', }) @IsNotEmpty({ message: 'Capture key is required' }) @IsString({ message: 'Capture key must be a string' }) captureKey: string; @ApiProperty({ type: 'string', format: 'binary', description: 'Image file (JPG, PNG)', }) file: Express.Multer.File; } /** * Response DTO for capture part V2 */ export class CapturePartV2ResponseDto { @ApiProperty({ description: 'Claim request ID', example: '507f1f77bcf86cd799439011', }) claimRequestId: string; @ApiProperty({ description: 'Type of capture', example: 'angle', }) captureType: string; @ApiProperty({ description: 'Key of what was captured', example: 'front', }) captureKey: string; @ApiProperty({ description: 'File URL', example: 'http://localhost:3000/files/captures/front-1234567890.jpg', }) fileUrl: string; @ApiProperty({ description: 'Whether all captures are now complete', example: false, }) allCapturesComplete: boolean; @ApiProperty({ description: 'Current workflow step', example: 'CAPTURE_PART_DAMAGES', }) currentStep: string; @ApiProperty({ description: 'Success message', example: 'Angle captured successfully. 6 captures remaining.', }) message: string; @ApiPropertyOptional({ description: 'True when expert-requested part resends are complete and the claim returned to the expert queue.', }) expertResendComplete?: boolean; } /** * Response DTO for car walk-around video upload (V2) */ export class VideoCaptureV2ResponseDto { @ApiProperty({ description: 'Claim case ID', example: '507f1f77bcf86cd799439011', }) claimRequestId: string; @ApiProperty({ description: 'ID of the stored video document (claim-video-capture)', example: '507f1f77bcf86cd799439012', }) videoId: string; @ApiProperty({ description: 'Success message', example: 'Video capture uploaded successfully.', }) message: string; }