From 9557ddd0ac19eb994f7211922f2e8597fbe8bc7e Mon Sep 17 00:00:00 2001 From: Guilherme Martinelli Date: Wed, 4 Oct 2023 15:18:53 +0000 Subject: [PATCH] storeGameResult method implemented --- backend/src/game/game.service.ts | 40 ++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/backend/src/game/game.service.ts b/backend/src/game/game.service.ts index fbcd3abf..634f9d66 100644 --- a/backend/src/game/game.service.ts +++ b/backend/src/game/game.service.ts @@ -3,6 +3,7 @@ import { GameDto } from './dto/game.dto'; import { GameMoveDto } from './dto/game.move'; import { Player } from './dto/game.player.dto'; import { PrismaService } from 'src/prisma/prisma.service'; +import { User } from '@prisma/client'; @Injectable() export class GameService { @@ -126,28 +127,37 @@ export class GameService { } private async storeGameResult(gameDto: GameDto) { - /* - const player1 = await this.prismaService.user.findFirst({ - where: { id: gameDto.player1.userId }, - }); + let winner: User; - const player2 = await this.prismaService.user.findFirst({ - where: { id: gameDto.player2.userId }, - }); - */ + if (this.findWinner(gameDto) == 1) { + winner = await this.prismaService.user.findFirst({ + where: { id: gameDto.player1.userId }, + }); + } else { + winner = await this.prismaService.user.findFirst({ + where: { id: gameDto.player2.userId }, + }); + } - //TODO: change to the real winner id from the database - const winner = - gameDto.score.player1 > gameDto.score.player2 - ? gameDto.player1 - : gameDto.player2; + winner.victory++; + const updateUser = await this.prismaService.user.update({ + where: { + id: winner.id, + }, + data: { + victory: winner.victory, + }, + }); - //TODO: add the game result into the user leaderboard database console.log( - `Winner: ${winner.socketId} with ${gameDto.score.player1} points`, + `Winner: ${updateUser.displayName} with ${gameDto.score.player1} points`, ); } + private findWinner(gameDto: GameDto) { + return gameDto.score.player1 > gameDto.score.player2 ? 1 : 2; + } + isGameFinished(gameDto: GameDto): boolean { if ( gameDto.score.player1 >= this.MAX_SCORE ||