import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import { IsArray, IsNotEmpty, IsOptional, IsString, ValidateNested } from 'class-validator';
import { Type } from 'class-transformer';

export class SendMessage {
  @ApiProperty()
  @IsNotEmpty()
  @IsString()
  to: string;

  @ApiProperty()
  @IsNotEmpty()
  @IsString()
  message: string;

  @ApiPropertyOptional()
  @IsOptional()
  @IsString()
  from?: string;
}

export class SingleMessageDto {
  @ApiProperty({
    description: 'Recipient phone number',
    example: '+1234567890',
  })
  @IsString()
  @IsNotEmpty()
  to: string;

  @ApiProperty({
    description: 'Message content',
    example: 'Test Single SMS from',
  })
  @IsString()
  @IsNotEmpty()
  message: string;
}

export class BulkMessagesDto {
  @ApiProperty({ type: [SendMessage] })
  @IsArray()
  @ValidateNested({ each: true })
  @Type(() => SendMessage)
  messages: SendMessage[];
}
