import { ApiPropertyOptional } from '@nestjs/swagger';
import { IsOptional, IsString, IsUUID, MaxLength } from 'class-validator';

export class ConvertirLeadDto {
  @ApiPropertyOptional({
    description: 'Cliente existente al que vincular el lead. Si se omite, se crea uno nuevo.',
  })
  @IsOptional()
  @IsUUID()
  cliente_id?: string;

  @ApiPropertyOptional({
    description:
      'Tipo de operación. Si se omite, se deriva de la naturaleza: B2B para un contribuyente y ' +
      'B2C para un no contribuyente. Si se manda, se valida contra la naturaleza — SIFEN sólo ' +
      'acepta B2B/B2G para contribuyentes y B2C/B2F para el resto.',
  })
  @IsOptional()
  @IsUUID()
  tipo_operacion_id?: string;

  @ApiPropertyOptional({ description: 'Razón social fiscal. Por defecto, el nombre del lead.' })
  @IsOptional()
  @IsString()
  @MaxLength(150)
  razon_social?: string;

  @ApiPropertyOptional({
    description:
      'Naturaleza del receptor. Si se omite, se deriva de tener RUC o no: con RUC es ' +
      'contribuyente y sin RUC no lo es. Mandarlo explícito sólo hace falta para un caso raro.',
  })
  @IsOptional()
  @IsUUID()
  naturaleza_id?: string;

  @ApiPropertyOptional({
    description: 'Obligatorio si el lead tiene RUC: un contribuyente necesita su tipo.',
  })
  @IsOptional()
  @IsUUID()
  tipo_contribuyente_id?: string;

  @ApiPropertyOptional({
    description: 'Obligatorio si el lead NO tiene RUC: cédula, pasaporte, etc.',
  })
  @IsOptional()
  @IsUUID()
  tipo_documento_id?: string;

  @ApiPropertyOptional({ description: 'Obligatorio si el lead NO tiene RUC', example: '4123456' })
  @IsOptional()
  @IsString()
  @MaxLength(20)
  nro_documento?: string;
}
