﻿import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger";
import {
  IsArray,
  IsInt,
  IsNotEmpty,
  IsOptional,
  IsString,
  Max,
  MaxLength,
  Min,
} from "class-validator";

export class CreateVehiculoDto {
  @ApiProperty({ description: "Placa del vehículo (única)" })
  @IsNotEmpty({ message: "La placa es requerida" })
  @IsString()
  @MaxLength(20)
  placa: string;

  @ApiPropertyOptional({ description: "Marca del vehículo" })
  @IsOptional()
  @IsString()
  @MaxLength(100)
  marca?: string;

  @ApiPropertyOptional({ description: "Modelo del vehículo" })
  @IsOptional()
  @IsString()
  @MaxLength(100)
  modelo?: string;

  @ApiPropertyOptional({ description: "Año del vehículo" })
  @IsOptional()
  @IsInt()
  @Min(1900)
  @Max(2100)
  anio?: number;

  @ApiPropertyOptional({ description: "Motor" })
  @IsOptional()
  @IsString()
  @MaxLength(100)
  motor?: string;

  @ApiPropertyOptional({ description: "Cilindraje" })
  @IsOptional()
  @IsString()
  @MaxLength(50)
  cilindraje?: string;

  @ApiPropertyOptional({ description: "Color" })
  @IsOptional()
  @IsString()
  @MaxLength(50)
  color?: string;

  @ApiProperty({ description: "ID del tipo de vehículo" })
  @IsNotEmpty({ message: "El tipo de vehículo es requerido" })
  @IsInt()
  tipoVehiculoId: number;

  @ApiPropertyOptional({
    description: "Cliente propietario principal (legacy)",
  })
  @IsOptional()
  @IsString()
  @MaxLength(24)
  clienteId?: string;

  @ApiPropertyOptional({ description: "Clientes asociados al vehículo (N:N)" })
  @IsOptional()
  @IsArray()
  clienteIds?: string[];

  @ApiPropertyOptional({ description: "Notas adicionales" })
  @IsOptional()
  @IsString()
  notas?: string;
}
