import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import { IsBoolean, IsInt, IsNumber, IsOptional, IsString, IsUUID, MaxLength, Min } from 'class-validator';

export class CreateVehiculoDto {
  @ApiProperty({ example: 'uuid-transportista' })
  @IsUUID()
  transportista_id: string;

  @ApiPropertyOptional({ description: 'UUID de modalidad_transporte (Terrestre/Fluvial/Aéreo/Multimodal)' })
  @IsUUID()
  @IsOptional()
  modalidad_transporte_id?: string;

  @ApiPropertyOptional({ description: 'UUID de tipo_transporte (Propio/Tercero)' })
  @IsUUID()
  @IsOptional()
  tipo_transporte_id?: string;

  @ApiProperty({ example: 'Toyota', maxLength: 10 })
  @IsString()
  @MaxLength(10)
  marca: string;

  @ApiPropertyOptional({ example: 'Hilux' })
  @IsString()
  @IsOptional()
  @MaxLength(60)
  modelo?: string;

  @ApiPropertyOptional({ example: 2022 })
  @IsInt()
  @IsOptional()
  @Min(1900)
  anio?: number;

  @ApiPropertyOptional({ example: 'Camión', description: 'Tipo de vehículo (texto libre)' })
  @IsString()
  @IsOptional()
  @MaxLength(50)
  tipo_vehiculo?: string;

  @ApiPropertyOptional({ example: 'ABC123', maxLength: 7 })
  @IsString()
  @IsOptional()
  @MaxLength(7)
  nro_matricula?: string;

  @ApiPropertyOptional({ example: 'ID-SIFEN-001', maxLength: 20 })
  @IsString()
  @IsOptional()
  @MaxLength(20)
  nro_identificacion?: string;

  @ApiPropertyOptional({ example: 1, description: '1=matrícula, 2=identificación' })
  @IsInt()
  @IsOptional()
  tipo_identificacion?: number;

  @ApiPropertyOptional({ example: 3500.0 })
  @IsNumber()
  @IsOptional()
  capacidad_carga_kg?: number;

  @ApiPropertyOptional({ example: 'Refrigerado' })
  @IsString()
  @IsOptional()
  @MaxLength(200)
  informacion_adicional?: string;

  @ApiPropertyOptional({ default: true })
  @IsBoolean()
  @IsOptional()
  activo?: boolean;
}
