import { v4 as uuidv4 } from 'uuid'; import { Injectable } from '@nestjs/common'; import { UsuariosService } from './usuarios.service'; export class Partida { constructor( public uuid: string, public uuidJugadorA: string, public nickJugadorA: string = '', public uuidJugadorB: string = null, public nickJugadorB: string = null, public abierta: boolean = true, ) {} } @Injectable() export class PartidasService { private _partidas: Map = new Map(); constructor(private readonly usuariosService: UsuariosService) {} get partidasAbiertas(): Partida[] { return Array.from(this._partidas.values()).filter( (partida) => partida.abierta, ); } get partidasCerradadas(): Partida[] { return Array.from(this._partidas.values()).filter( (partida) => !partida.abierta, ); } creaPartida(uuidJugadorA: string) { const uuid = uuidv4(); const nickJugadorA = this.usuariosService.usuarios.get(uuidJugadorA).nickname; const partida = new Partida(uuid, uuidJugadorA, nickJugadorA); this._partidas.set(uuid, partida); return partida; } unirsePartida(uuidJugadorB: string, uuidPartida: string){ const partida = this._partidas.get(uuidPartida); const nickJugadorB = this.usuariosService.usuarios.get(uuidJugadorB)?.nickname; partida.uuidJugadorB = uuidJugadorB; partida.nickJugadorB = nickJugadorB; partida.abierta = false; return partida; } eliminarPartida(uuidJugador: string, uuidPartida: string) { if (!this._partidas.has(uuidPartida)) { return null; } const partida = this._partidas.get(uuidPartida); if ( partida.uuidJugadorA !== uuidJugador && partida.uuidJugadorB !== uuidJugador ) { return null; } this._partidas.delete(uuidPartida); return uuidPartida; } }