import { v4 as uuidv4 } from 'uuid';
import { Injectable, Scope } from '@nestjs/common';

class Usuario {
  constructor(
    public uuid: string,
    public nickname: string,
    public conectado: boolean = false,
  ) {}
}

@Injectable()
export class UsuariosService {
  private _usuarios: Map<string, Usuario> = new Map<string, Usuario>();

  get usuarios() {
    return this._usuarios;
  }

  getUsuarioByUUID(uuid: string) {
    return this._usuarios.get(uuid) ? this._usuarios.get(uuid) : undefined;
  }

  creaUsuario(nickname: string) {
    const uuid = uuidv4();
    const usuario = new Usuario(uuid, nickname);
    this._usuarios.set(uuid, usuario);
    return usuario.uuid;
  }

  obtenerUsuarioPorNickname(nickname: string): Usuario | undefined {
    for (const usuario of this._usuarios.values()) {
      if (usuario.nickname === nickname) {
        return usuario;
      }
    }
    return undefined;
  }
}
