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

export class RequiredAttendeeDto {
  @IsString()
  userId!: string;

  @IsOptional()
  @IsString()
  role?: string;
}

export class AddRequiredAttendeesDto {
  @IsOptional()
  @IsArray()
  @IsString({ each: true })
  userIds?: string[];

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

  @IsOptional()
  @IsBoolean()
  markAsCustom?: boolean;
}

export class ImportAttendeeDto {
  @IsOptional()
  @IsString()
  userId?: string;

  @IsOptional()
  @IsEmail()
  email?: string;

  @IsOptional()
  @IsString()
  role?: string;
}

export class ImportAttendeesDto {
  @IsArray()
  @ValidateNested({ each: true })
  @Type(() => ImportAttendeeDto)
  attendees!: ImportAttendeeDto[];
}
