import { IsUUID, IsString, IsDateString, IsNumber, IsInt, IsOptional, IsEnum, Min, } from 'class-validator'; import { WorkOrderStatus, WorkOrderPriority } from '../entities/work-order.entity'; export class CreateWorkOrderDto { @IsUUID() vehicleId!: string; @IsString() title!: string; @IsOptional() @IsString() description?: string; @IsOptional() @IsEnum(WorkOrderStatus) status?: WorkOrderStatus; @IsOptional() @IsEnum(WorkOrderPriority) priority?: WorkOrderPriority; @IsOptional() @IsString() assignedTo?: string; @IsOptional() @IsDateString() openedAt?: string; @IsOptional() @IsDateString() closedAt?: string; @IsOptional() @IsNumber() laborCost?: number; @IsOptional() @IsNumber() partsCost?: number; } export class UpdateWorkOrderDto { @IsOptional() @IsString() title?: string; @IsOptional() @IsString() description?: string; @IsOptional() @IsEnum(WorkOrderStatus) status?: WorkOrderStatus; @IsOptional() @IsEnum(WorkOrderPriority) priority?: WorkOrderPriority; @IsOptional() @IsString() assignedTo?: string; @IsOptional() @IsDateString() closedAt?: string; @IsOptional() @IsNumber() laborCost?: number; @IsOptional() @IsNumber() partsCost?: number; } export class CreatePartDto { @IsString() name!: string; @IsOptional() @IsString() sku?: string; @IsOptional() @IsString() category?: string; @IsOptional() @IsInt() @Min(0) quantityInStock?: number; @IsOptional() @IsInt() @Min(0) reorderLevel?: number; @IsOptional() @IsNumber() unitCost?: number; @IsOptional() @IsString() location?: string; } export class UpdatePartDto { @IsOptional() @IsString() name?: string; @IsOptional() @IsString() sku?: string; @IsOptional() @IsString() category?: string; @IsOptional() @IsInt() @Min(0) quantityInStock?: number; @IsOptional() @IsInt() @Min(0) reorderLevel?: number; @IsOptional() @IsNumber() unitCost?: number; @IsOptional() @IsString() location?: string; } export class CreateWarrantyDto { @IsUUID() vehicleId!: string; @IsString() component!: string; @IsOptional() @IsString() provider?: string; @IsOptional() @IsDateString() startDate?: string; @IsDateString() expiryDate!: string; @IsOptional() @IsString() coverageNotes?: string; }