Skip to content
Snippets Groups Projects
tracking.controller.ts 1.12 KiB
Newer Older
Ronnie Friman's avatar
Ronnie Friman committed
import { Controller, Post, Param, UsePipes, Body, Get } from '@nestjs/common';
L4168's avatar
L4168 committed

import { TrackingService } from './tracking.service';
import { Roles, GameStates } from '../shared/guard.decorator';
import { ValidationPipe } from '../shared/validation.pipe';
L4072's avatar
L4072 committed
import { GamePerson } from '../game/gameperson.decorator';
Ronnie Friman's avatar
Ronnie Friman committed
import { GeoDTO } from './tracking.dto';
L4168's avatar
L4168 committed

@Controller('tracking')
export class TrackingController {
  constructor(private trackingservice: TrackingService) {}

  // inserts tracking data to the database
  // :id is the id of the game
  @Post('location/:id')
  @Roles('soldier')
L4168's avatar
L4168 committed
  @GameStates('STARTED')
L4168's avatar
L4168 committed
  @UsePipes(new ValidationPipe())
  async trackLocation(
    @GamePerson() gameperson,
L4168's avatar
L4168 committed
    @Param('id') id,
    @Body() trackdata: GeoDTO,
L4168's avatar
L4168 committed
  ) {
    return this.trackingservice.trackLocation(gameperson, id, trackdata);
L4168's avatar
L4168 committed
  }
L4072's avatar
L4072 committed
  // finds certain player's location
  // :id is the id of the game
  @Get('players/:id')
  @Roles('admin', 'factionleader')
  @GameStates('STARTED', 'PAUSED')
  async getPlayerLocations(@GamePerson() gameperson, @Param('id') gameId) {
    return this.trackingservice.getPlayers(gameperson, gameId);
L4168's avatar
L4168 committed
}