Skip to content
Snippets Groups Projects
draw.controller.ts 1.72 KiB
Newer Older
L4168's avatar
L4168 committed
import {
  Controller,
  Put,
  Get,
  Param,
  UsePipes,
  Body,
L4168's avatar
L4168 committed
  UseInterceptors,
  ClassSerializerInterceptor,
L4168's avatar
L4168 committed
} from '@nestjs/common';
L4168's avatar
L4168 committed

L4168's avatar
L4168 committed
import { DrawService } from './draw.service';
L4168's avatar
L4168 committed
import { Roles, GameStates } from '../shared/guard.decorator';
L4168's avatar
L4168 committed
import { MapDrawingDTO } from './mapdrawing.dto';
Samuli Virtapohja's avatar
Samuli Virtapohja committed
import { GamePerson } from '../game/gameperson.decorator';
Ronnie Friman's avatar
Ronnie Friman committed
import { ValidationPipe } from '../shared/validation.pipe';
L4072's avatar
L4072 committed
//////////////////////////////////////////////////////////////////////////
///     DrawController                                                 ///
///                                                                    ///
///     Functions either insert or return MapDrawing data,             ///
///     Insert functions require user to have proper role (either gm   ///
///     or commander) in the game to be able store the data:           ///
///     MapDrawingDTO data to database.                                ///
///     Data return functions require atleast spectator role.          ///
//////////////////////////////////////////////////////////////////////////
L4168's avatar
L4168 committed
@Controller('draw')
export class DrawController {
  constructor(private drawService: DrawService) {}

Samuli Virtapohja's avatar
Samuli Virtapohja committed
  @Put('mapdrawing/:id')
  @Roles('admin', 'factionleader')
L4168's avatar
L4168 committed
  @GameStates('CREATED', 'STARTED', 'PAUSED')
L4168's avatar
L4168 committed
  @UsePipes(new ValidationPipe())
L4168's avatar
L4168 committed
  async draw(
    @GamePerson() gameperson,
    @Param('id') gameId,
    @Body() data: MapDrawingDTO,
  ) {
    return this.drawService.draw(gameperson, gameId, data);
L4168's avatar
L4168 committed
  }

Samuli Virtapohja's avatar
Samuli Virtapohja committed
  @Get('map/:id')
L4168's avatar
L4168 committed
  @Roles('admin', 'factionleader', 'soldier', 'groupleader')
  @UseInterceptors(ClassSerializerInterceptor)
  async drawMap(@GamePerson() gameperson, @Param('id') gameId) {
    return this.drawService.drawMap(gameperson, gameId);
L4168's avatar
L4168 committed
  }
}