import { ApiPropertyOptional } from '@nestjs/swagger';
import { Transform } from 'class-transformer';
import { IsObject, IsOptional, IsUUID } from 'class-validator';

/**
 * El mapeo viaja como JSON en un campo del multipart, porque el archivo va en el
 * mismo request. Si no se envía, se usa el que sugiere el preview.
 */
export class ImportarLeadsDto {
  @ApiPropertyOptional({
    description: 'Campo del lead → nombre exacto de la columna de la planilla',
    example: { nombre: 'Nombre y Apellido', telefono: 'Celular' },
  })
  @Transform(({ value }) => (typeof value === 'string' ? JSON.parse(value) : value))
  @IsObject()
  @IsOptional()
  mapeo?: Record<string, string>;

  @ApiPropertyOptional({ description: 'Origen por defecto para las filas que no traen columna de origen' })
  @IsUUID()
  @IsOptional()
  origen_id?: string;

  @ApiPropertyOptional({ description: 'Sucursal a la que se asignan los leads importados' })
  @IsUUID()
  @IsOptional()
  sucursal_id?: string;
}
