/**
 * WhatsApp Job DTO
 * 
 * Data Transfer Object for queuing WhatsApp message jobs
 */

import { IsString, IsOptional, IsArray, ValidateNested } from 'class-validator';
import { Type } from 'class-transformer';

class WhatsAppParameter {
  @IsString()
  name: string;

  @IsString()
  value: string;
}

export class QueueWhatsAppDto {
  @IsString()
  phoneNumber: string; // With country code (e.g., +919876543210)

  @IsString()
  templateName: string; // WATI template name

  @IsArray()
  @ValidateNested({ each: true })
  @Type(() => WhatsAppParameter)
  @IsOptional()
  parameters?: WhatsAppParameter[];

  @IsString()
  @IsOptional()
  broadcastName?: string; // For broadcast messages

  @IsString()
  @IsOptional()
  correlationId?: string;

  @IsString()
  @IsOptional()
  userId?: string;

  @IsOptional()
  metadata?: Record<string, any>;
}
