diff --git a/src/draw/draw.controller.ts b/src/draw/draw.controller.ts index 10b836118855d17bee7856203b1258f4b572c8d5..26f6cf8c56142ef190ad3bcbfd7ce9d32caa371e 100644 --- a/src/draw/draw.controller.ts +++ b/src/draw/draw.controller.ts @@ -12,6 +12,7 @@ import { import { AuthGuard } from '../shared/auth.guard'; import { DrawService } from './draw.service'; import { Roles, GameStates } from '../shared/guard.decorator'; +import { MapDrawingDTO, ReturnDrawingsDTO } from './mapdrawing.dto'; /* DrawController @@ -25,17 +26,17 @@ export class DrawController { constructor(private drawService: DrawService) {} @Put('mapdrawing/:id') - @UsePipes(new ValidationPipe()) @Roles('admin', 'factionleader') @GameStates('CREATED', 'STARTED') - async draw(@Param('id') gameId, @Body() data) { + @UsePipes(new ValidationPipe()) + async draw(@Param('id') gameId, @Body() data: MapDrawingDTO) { return this.drawService.draw(gameId, data); } @Get('map/:id') @UseGuards(new AuthGuard()) @UsePipes(new ValidationPipe()) - async drawMap(@Param('id') id, @Body() data) { + async drawMap(@Param('id') id, @Body() data: ReturnDrawingsDTO) { return this.drawService.drawMap(id, data); } } diff --git a/src/draw/draw.service.ts b/src/draw/draw.service.ts index ffa48d4b634a35c6b0dc4bb26391d269c9f9b76a..d5ddf23e9574771bc769e2b6d58b59a4e95ad10d 100644 --- a/src/draw/draw.service.ts +++ b/src/draw/draw.service.ts @@ -3,6 +3,7 @@ import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { MapDrawingEntity } from '../draw/coordinate.entity'; +import { MapDrawingDTO, ReturnDrawingsDTO } from './mapdrawing.dto'; @Injectable() export class DrawService { @@ -11,11 +12,9 @@ export class DrawService { private mapDrawingRepository: Repository<MapDrawingEntity>, ) {} - async draw(gameId, data: MapDrawingEntity) { + async draw(gameId, data: MapDrawingDTO) { data['gameId'] = gameId; - const drawing = await this.mapDrawingRepository.create(data); - if (data.mapDrawingId == null || data.mapDrawingId == '') { // luo uuden instanssin. const mapDrawing = await this.mapDrawingRepository.insert(drawing); @@ -27,13 +26,21 @@ export class DrawService { } // draw map based on game and - async drawMap(id, data: MapDrawingEntity) { - data['gameId'] = id; - data['drawingIsActive'] = true; - // get faction - const mapDrawings = await this.mapDrawingRepository.create(data); - + async drawMap(id, data: ReturnDrawingsDTO) { // return mapdrawings with given faction and gameid - return await this.mapDrawingRepository.find(mapDrawings); + return await this.mapDrawingRepository.find({ + where: [ + { + gameId: id, + faction: data.factionId, + drawingIsActive: true, + }, + { + gameId: id, + faction: null, + drawingIsActive: true, + }, + ], + }); } } diff --git a/src/draw/mapdrawing.dto.ts b/src/draw/mapdrawing.dto.ts index 03eca2d1057490558e271252d12a2cc1ef883273..98b2d5a95a6bcc0ad077bec4a38f367788f852c9 100644 --- a/src/draw/mapdrawing.dto.ts +++ b/src/draw/mapdrawing.dto.ts @@ -1,26 +1,27 @@ -import { IsUUID } from 'class-validator'; +import { IsUUID, IsOptional, IsBoolean, Allow } from 'class-validator'; -import { GameDTO } from '../game/game.dto'; -import { GameEntity, Game_PersonEntity } from '../game/game.entity'; import { FactionEntity } from '../faction/faction.entity'; -import { FactionDTO } from '../faction/faction.dto'; -import { MapDrawingEntity } from '../draw/coordinate.entity'; +import { GameEntity } from 'src/game/game.entity'; export class MapDrawingDTO { + @IsOptional() + @IsUUID('4') + mapDrawingId: string; + @Allow() data: JSON; - gameId: GameDTO; - faction?: FactionDTO; - isActive?: boolean; - validUntil?: string; + @IsOptional() + @IsUUID('4') + gameId: GameEntity; + @IsOptional() + @IsUUID('4') + faction?: FactionEntity; + @IsBoolean() + drawingIsActive?: boolean; + drawingValidTill?: string; } -export class DrawMapDTO { +export class ReturnDrawingsDTO { + @IsOptional() @IsUUID('4') - mapDrawingId: MapDrawingEntity; - - gameId: GameEntity; factionId: FactionEntity; - - gamepersonId: Game_PersonEntity; - data: JSON; }