Si un défi était en cours lors d'une capture, on le clôt

This commit is contained in:
Emmy D'Anello 2024-12-08 22:40:51 +01:00
parent 31c44eab6e
commit 50a9f3369c
Signed by: ynerant
GPG Key ID: 3A75C55819C8CF85
2 changed files with 17 additions and 0 deletions

View File

@ -39,6 +39,7 @@ export class GameController {
* Change de joueurse en course après une capture * Change de joueurse en course après une capture
* *
* @throws {401} Non authentifiée * @throws {401} Non authentifiée
* @throws {409} La partie n'est pas démarrée
*/ */
@Post('/switch-running-player') @Post('/switch-running-player')
@UseGuards(JwtAuthGuard) @UseGuards(JwtAuthGuard)

View File

@ -50,6 +50,22 @@ export class GameService {
async switchRunningPlayer(): Promise<Game> { async switchRunningPlayer(): Promise<Game> {
const game = await this.find() const game = await this.find()
if (!game.started)
throw new ConflictException("La partie n'a pas encore démarré.")
// Clôture de l'éventuel défi en cours, qui n'a alors pas été réussi
await this.prisma.challengeAction.updateMany({
where: {
playerId: game.currentRun.runnerId,
runId: game.currentRunId,
active: true,
},
data: {
active: false,
success: false,
},
})
const newRunnerId = game.currentRun.runnerId == 1 ? 2 : 1 const newRunnerId = game.currentRun.runnerId == 1 ? 2 : 1
const firstRun = await this.prisma.playerRun.findFirst({ where: { runnerId: newRunnerId } }) !== null const firstRun = await this.prisma.playerRun.findFirst({ where: { runnerId: newRunnerId } }) !== null
const newRun = await this.prisma.playerRun.create({ const newRun = await this.prisma.playerRun.create({