import { ApiProperty } from "@nestjs/swagger";
import { IsBoolean, IsOptional, IsString, IsUrl } from "class-validator";

export class ConfirmPaymentIntentDto {
  @ApiProperty({
    required: false,
    example: "pcfg_01HXYZABCDEFGHJKMNPQRSTV",
    description: "Forzar una provider config específica. Si se omite, se rutea por (country, requestedProvider, priority).",
  })
  @IsOptional()
  @IsString()
  providerConfigId?: string;

  @ApiProperty({
    required: false,
    example: "18",
    description:
      "Medio de pago en el código del provider (ej. `platformId` de Dpago). Sobrescribe el guardado en el intent. " +
      "Requerido por providers que exigen elegir el método antes de crear la transacción.",
  })
  @IsOptional()
  @IsString()
  platformId?: string;

  @ApiProperty({
    required: false,
    example: true,
    description:
      "Pedir un LINK DE PAGO nativo del provider (ej. Dpago `/links`) en vez de una transacción " +
      "directa. Con esto no hace falta `platformId`. Los providers sin link nativo lo ignoran.",
  })
  @IsOptional()
  @IsBoolean()
  paymentLink?: boolean;

  @ApiProperty({
    required: false,
    example: "https://merchant.com/orders/123/success",
    description: "URL de retorno tras pago aprobado (sobrescribe la de checkout session si existe).",
  })
  @IsOptional()
  @IsUrl({ require_protocol: true, require_tld: false })
  returnUrl?: string;

  @ApiProperty({ required: false, example: "https://merchant.com/orders/123/cancel" })
  @IsOptional()
  @IsUrl({ require_protocol: true, require_tld: false })
  cancelUrl?: string;
}
