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

import { TrackingService } from './tracking.service';
import { TrackingDTO } from './tracking.dto';
import { User } from '../user/user.decorator';
import { Roles, GameStates } from '../shared/guard.decorator';
import { ValidationPipe } from '../shared/validation.pipe';
import { GeoDTO } from './geo.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(
    @User('id') userId,
    @Param('id') id,
    @Body() trackdata: GeoDTO,
L4168's avatar
L4168 committed
  ) {
    return this.trackingservice.trackLocation(userId, id, trackdata);
L4168's avatar
L4168 committed
  }

  @Get('players/:id')
  @Roles('admin', 'factionleader')
  @GameStates('STARTED', 'PAUSED')
  async getPlayerLocations(@User('id') userId, @Param('id') gameId) {
    return this.trackingservice.getPlayers(userId, gameId);
  }
L4168's avatar
L4168 committed
}