import { Controller, Post, UseGuards, Body, Get, Param, UsePipes, Put, } from '@nestjs/common'; import { GameService } from './game.service'; import { AuthGuard } from '../shared/auth.guard'; import { User } from '../user/user.decorator'; import { GameDTO, GameGroupDTO, FlagboxEventDTO } from './game.dto'; import { ValidationPipe } from '../shared/validation.pipe'; import { Roles } from '../shared/roles.decorator'; @Controller('game') export class GameController { constructor(private gameservice: GameService) {} @Post('new') @UseGuards(new AuthGuard()) @UsePipes(new ValidationPipe()) async newGame(@User('id') person, @Body() body: GameDTO) { return this.gameservice.createNewGame(person, body); } @Put(':id') @Roles('admin') @UsePipes(new ValidationPipe()) async editGame(@Param('id') id: string, @Body() body: GameDTO) { return this.gameservice.editGame(id, body); } @Post(':id') @UseGuards(new AuthGuard()) @UsePipes(new ValidationPipe()) async createGroup( @User('id') person, @Param('id') id: string, @Body() data: GameGroupDTO, ) { try { return this.gameservice.createGroup(person, id, data); } catch (error) {} } @Get('get-groups') async getGroups() { return this.gameservice.showGroups(); } @Put('groups/:id') @UseGuards(new AuthGuard()) async joinGroup(@User('id') person, @Param('id') id) { return this.gameservice.joinGroup(person, id); } @Put('joinfaction') @UseGuards(new AuthGuard()) joinFaction( @User('id') person, @Param('id') gameId, @Param('faction') faction: string, @Body() password: string, ) { try { // return this.gameservice.joinFaction(person, gameId, faction, password); } catch (error) { return error; } } @Get('listgames') async listGames() { return this.gameservice.listGames(); } @Get(':id') async returnGameInfo(@Param('id') id: string) { return this.gameservice.returnGameInfo(id); } @Get('flag/:id') async flagboxQuery(@Param('id') id: string) { return this.gameservice.flagboxQuery(id); } @Post('flag/:id') async flagboxEvent(@Param('id') id: string, @Body() data: FlagboxEventDTO) { return this.gameservice.flagboxEvent(id, data); } }