import { Injectable } from '@nestjs/common';
import { Partida, PartidasService } from 'src/shared/partidas.service';
import { UsuariosService } from 'src/shared/usuarios.service';

@Injectable()
export class SalaChatService {
  constructor(
    private readonly usuariosService: UsuariosService,
    private readonly partidasService: PartidasService,
  ) {}

  get listaUsuariosSinPartidas() {
    return Array.from(this.usuariosService.usuarios.values()).map(
      ({ uuid, nickname, conectado }) => ({
        uuid,
        nickname,
        conectado,
      }),
    );
  }

  get partidasAbiertas(){
    return this.partidasService.partidasAbiertas;
  }


  getUsuarioUUID(uuid: string) {
    return this.usuariosService.getUsuarioByUUID(uuid);
  }
  conectaUsuarioUUID(uuid: string) {
    const user = this.usuariosService.getUsuarioByUUID(uuid);
    if (user) {
      user.conectado = true;
      return {
        uuid: user.uuid,
        nickname: user.nickname,
        conectado: user.conectado,
      };
    } else {
      return undefined;
    }
  }

  desconectaUsuarioUUID(uuid: string) {
    const user = this.usuariosService.getUsuarioByUUID(uuid);
    if (user) {
      user.conectado = false;
      return {
        uuid: user.uuid,
        nickname: user.nickname,
        conectado: user.conectado,
      };
    } else {
      return undefined;
    }
  }

  creaPartida(uuidJugadorCreador: string) {
    const partida = this.partidasService.creaPartida(uuidJugadorCreador);
    return partida;
  }
}
