From f9b2e98e73e56873e8f745c68ff68fc3d48c7f40 Mon Sep 17 00:00:00 2001 From: Samuli Virtapohja <l4721@student.jamk.fi> Date: Mon, 8 Jul 2019 10:27:00 +0300 Subject: [PATCH] add get players --- src/faction/faction.controller.ts | 2 +- src/tracking/tracking.service.ts | 31 ++++++++++++++++++++++++------- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/faction/faction.controller.ts b/src/faction/faction.controller.ts index 98fcc85..82e29d3 100644 --- a/src/faction/faction.controller.ts +++ b/src/faction/faction.controller.ts @@ -79,7 +79,7 @@ export class FactionController { // :id is the id of the game, and is needed for GameStates to check the state of the game @Put('join-faction/:id') @UseGuards(new AuthGuard()) - @GameStates('CREATED') + @GameStates('CREATED', 'STARTED') @UsePipes(new ValidationPipe()) joinFaction( @User('id') person, diff --git a/src/tracking/tracking.service.ts b/src/tracking/tracking.service.ts index cb44c4f..fb4eab0 100644 --- a/src/tracking/tracking.service.ts +++ b/src/tracking/tracking.service.ts @@ -19,8 +19,8 @@ export class TrackingService { async trackLocation(personId, gameId, trackdata: TrackingDTO) { // find player let gameperson = await this.gamepersonrepository.findOne({ - game: gameId, - person: personId, + where: { game: gameId, person: personId }, + relations: ['faction'], }); if (!gameperson) { throw new HttpException( @@ -51,6 +51,8 @@ export class TrackingService { // initialize timestamp trackdata.data['geometry']['properties']['time'] = []; trackedperson = await this.trackingrepository.create(trackdata); + trackedperson.faction = gameperson.faction; + trackedperson.game = gameId; trackedperson.gamepersonId = gameperson; return await this.trackingrepository.save(trackedperson); } @@ -64,18 +66,33 @@ export class TrackingService { relations: ['faction'], }); - // if user , user is factionleader + let playerdata; + // get playerdata if (gameperson.faction) { - const playerdata = await this.trackingrepository.find({ + playerdata = await this.trackingrepository.find({ where: { faction: gameperson.faction }, + relations: ['faction', 'gamepersonId'], }); - return playerdata; } else { - const playerdata = await this.trackingrepository.find({ + playerdata = await this.trackingrepository.find({ where: { game: gameId }, + relations: ['faction', 'gamepersonId'], }); - return 'admin'; } + + // parse data + const currentdata = await Promise.all( + playerdata.map(async player => { + return { + gamepersonId: player['gamepersonId']['gamepersonId'], + gamepersonRole: player['gamepersonId']['role'], + factionId: player['faction']['factionId'], + coordinates: player['data']['geometry']['coordinates'].pop(), + }; + }), + ); + + return currentdata; } private async mapFunction(data): Promise<Number> { -- GitLab