import { ApiProperty, ApiPropertyOptional, PartialType } from '@nestjs/swagger';
import {
  IsString,
  IsEmail,
  IsBoolean,
  IsEnum,
  IsOptional,
  IsNumber,
} from 'class-validator';

export enum SubscriptionTier {
  FREE = 'FREE',
  BASIC = 'BASIC',
  PROFESSIONAL = 'PROFESSIONAL',
  ENTERPRISE = 'ENTERPRISE',
}

// ===== Organization DTOs =====
export class CreateBreachCheckOrganizationDto {
  @ApiProperty({
    description: 'Organization name',
    example: 'Acme Corporation',
    maxLength: 255,
  })
  @IsString()
  orgName: string;

  @ApiProperty({
    description: 'Subscription tier',
    enum: SubscriptionTier,
    default: SubscriptionTier.FREE,
  })
  @IsEnum(SubscriptionTier)
  @IsOptional()
  subscriptionTier?: SubscriptionTier = SubscriptionTier.FREE;

  @ApiProperty({
    description: 'Contact email for the organization',
    example: 'admin@acme.com',
    maxLength: 255,
  })
  @IsEmail()
  contactEmail: string;

  @ApiPropertyOptional({
    description: 'Whether the organization is active',
    default: true,
  })
  @IsBoolean()
  @IsOptional()
  isActive?: boolean = true;

  @ApiProperty({
    description: 'User ID associated with the organization',
    example: 123,
  })
  @IsNumber()
  userId: number;
}
