import { ApiProperty } from '@nestjs/swagger';
import { IsObject, IsOptional, IsString } from 'class-validator';

/**
 * Mapeo de columnas del Excel a campos de cartera_importada_documentos.
 * Cada clave es el campo destino; el valor es el header de la columna en el Excel.
 *
 *   {
 *     cliente_externo_id: "Cód. Cliente",
 *     cliente_nombre:     "Razón Social",
 *     documento_numero:   "Nro Factura",
 *     monto_total:        "Total",
 *     saldo_pendiente:    "Saldo",
 *     fecha_emision:      "Emisión",
 *     fecha_vencimiento:  "Vencimiento",
 *     ...
 *   }
 */
export class MapeoColumnasDto {
  @ApiProperty()
  @IsString()
  cliente_externo_id!: string;

  @ApiProperty()
  @IsString()
  cliente_nombre!: string;

  @ApiProperty({ required: false })
  @IsOptional()
  @IsString()
  cliente_documento?: string;

  @ApiProperty({ required: false })
  @IsOptional()
  @IsString()
  cliente_telefono?: string;

  @ApiProperty({ required: false })
  @IsOptional()
  @IsString()
  cliente_email?: string;

  @ApiProperty()
  @IsString()
  documento_numero!: string;

  @ApiProperty({ required: false })
  @IsOptional()
  @IsString()
  documento_tipo?: string;

  @ApiProperty({ required: false })
  @IsOptional()
  @IsString()
  moneda_codigo?: string;

  @ApiProperty()
  @IsString()
  monto_total!: string;

  @ApiProperty()
  @IsString()
  saldo_pendiente!: string;

  @ApiProperty()
  @IsString()
  fecha_emision!: string;

  @ApiProperty({ required: false })
  @IsOptional()
  @IsString()
  fecha_vencimiento?: string;

  @ApiProperty({ required: false })
  @IsOptional()
  @IsString()
  cuotas_total?: string;
}

export class ConfirmarImportacionDto {
  @ApiProperty({ type: MapeoColumnasDto })
  @IsObject()
  mapeo!: MapeoColumnasDto;
}
