From e408ac59d443f843b0cb066a41b5d71f41a5c9a8 Mon Sep 17 00:00:00 2001 From: Samuli Virtapohja <l4721@student.jamk.fi> Date: Fri, 5 Jul 2019 15:32:31 +0300 Subject: [PATCH] baselogic for factionleader and admin added --- src/tracking/tracking.controller.ts | 8 ++++++++ src/tracking/tracking.entity.ts | 3 +++ src/tracking/tracking.service.ts | 17 +++++++++++++++++ 3 files changed, 28 insertions(+) diff --git a/src/tracking/tracking.controller.ts b/src/tracking/tracking.controller.ts index 9451cdc..8049173 100644 --- a/src/tracking/tracking.controller.ts +++ b/src/tracking/tracking.controller.ts @@ -5,6 +5,7 @@ import { UseGuards, UsePipes, Body, + Get, } from '@nestjs/common'; import { TrackingService } from './tracking.service'; @@ -30,4 +31,11 @@ export class TrackingController { ) { return this.trackingservice.trackLocation(userId, id, trackdata); } + + @Get('players/:id') + @Roles('admin', 'factionleader') + @GameStates('STARTED', 'PAUSED') + async getPlayerLocations(@User('id') userId, @Param('id') gameId) { + return this.trackingservice.getPlayers(userId, gameId); + } } diff --git a/src/tracking/tracking.entity.ts b/src/tracking/tracking.entity.ts index b312391..e208b95 100644 --- a/src/tracking/tracking.entity.ts +++ b/src/tracking/tracking.entity.ts @@ -1,5 +1,6 @@ import { Entity, PrimaryGeneratedColumn, Column, ManyToOne } from 'typeorm'; import { Game_PersonEntity } from '../game/game.entity'; +import { FactionEntity } from 'src/faction/faction.entity'; @Entity('Tracking') export class TrackingEntity { @@ -7,4 +8,6 @@ export class TrackingEntity { @Column({ type: 'json', nullable: true }) data: JSON; @ManyToOne(type => Game_PersonEntity, person => person.gamepersonId) gamepersonId: Game_PersonEntity; + @ManyToOne(type => FactionEntity, faction => faction.factionId) + faction: FactionEntity; } diff --git a/src/tracking/tracking.service.ts b/src/tracking/tracking.service.ts index 6dc01c1..0d6994c 100644 --- a/src/tracking/tracking.service.ts +++ b/src/tracking/tracking.service.ts @@ -5,6 +5,7 @@ import { Repository } from 'typeorm'; import { Game_PersonEntity } from '../game/game.entity'; import { TrackingEntity } from './tracking.entity'; import { TrackingDTO } from './tracking.dto'; +import { FactionEntity } from '../faction/faction.entity'; @Injectable() export class TrackingService { @@ -55,6 +56,22 @@ export class TrackingService { } } + // get player data while game is running + async getPlayers(userId, gameId) { + // get gameperson + const gameperson = await this.gamepersonrepository.findOne({ + where: { person: userId, game: gameId }, + relations: ['faction'], + }); + + // if faction is not null, user is factionleader + if (gameperson.faction) { + return 'factionleader'; + } else { + return 'admin'; + } + } + private async mapFunction(data): Promise<Number> { return await data.map(type => { return type; -- GitLab