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

export class SendNotificationDto {
  @ApiProperty({ description: 'Restaurant ID (ULID)' })
  @IsString()
  @IsNotEmpty()
  restaurantId: string;

  @ApiPropertyOptional({ description: 'User ID (ULID)' })
  @IsString()
  @IsOptional()
  userId?: string;

  @ApiProperty({ description: 'Notification type (e.g., ORDER_CONFIRMED, PAYMENT_FAILED)' })
  @IsString()
  @IsNotEmpty()
  notificationType: string;

  @ApiProperty({ description: 'Notification payload' })
  @IsObject()
  @IsNotEmpty()
  payload: {
    title?: string;
    message: string;
    body?: string;
    phoneNumber?: string;
    pushToken?: string;
    data?: Record<string, any>;
    templateId?: string;
    parameters?: Array<{ name: string; value: string }>;
  };

  @ApiPropertyOptional({ description: 'Idempotency key to prevent duplicates' })
  @IsString()
  @IsOptional()
  idempotencyKey?: string;
}
