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

export class CreateMeetingUserDto {
  @IsOptional()
  @IsUUID()
  userId?: string;

  @IsEmail()
  email!: string;

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

export class UpdateMeetingUserDto {
  @IsOptional()
  @IsString()
  role?: string;
}

export class UserSearchQueryDto {
  @IsOptional()
  @IsString()
  q?: string;

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

export class MeetingUsersQueryDto {
  @IsOptional()
  @IsString()
  page?: string;

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

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

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

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

export class ImportMeetingUsersDto {
  @IsArray()
  @ValidateNested({ each: true })
  @Type(() => CreateMeetingUserDto)
  users!: CreateMeetingUserDto[];
}

export class ResetPasswordDto {
  @IsString()
  newPassword!: string;

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

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