This commit is contained in:
Kirill Ivlev 2024-10-31 14:08:31 +04:00
parent 75080c29bb
commit 08fa0563e7
5 changed files with 28 additions and 5 deletions

View file

@ -0,0 +1,19 @@
import {CommandHandler, ICommandHandler} from "@nestjs/cqrs";
import {IncreasePlayerScoreCommand} from "../increase-player-score.command";
import { Logger } from "@nestjs/common";
import {GuestsService} from "../../guests.service";
@CommandHandler(IncreasePlayerScoreCommand)
export class IncreasePlayerScoreCommandHandler implements ICommandHandler<IncreasePlayerScoreCommand> {
private logger = new Logger(IncreasePlayerScoreCommandHandler.name);
constructor(private guestService: GuestsService) {
}
async execute(command: IncreasePlayerScoreCommand): Promise<any> {
this.logger.verbose(`IncreasePlayerScoreCommandHandler: entering, arguments: player: ${command.user}, amount: ${command.score}`);
await this.guestService.updatePlayerScore(command.user, command.score);
return true;
}
}

View file

@ -0,0 +1,4 @@
export class IncreasePlayerScoreCommand {
constructor(public user: number, public score: number) {
}
}

View file

@ -25,6 +25,7 @@ import {SetGuestPropertyCommandHandler} from "./command/handlers/set-guest-prope
import {WrongAnswerReceivedGuestEventHandler} from "./event-handlers/wrong-answer-received-guest-event.handler";
import {VoiceService} from "../voice/voice.service";
import {VoiceModule} from "../voice/voice.module";
import {IncreasePlayerScoreCommandHandler} from "./command/handlers/increase-player-score-command.handler";
const commandHandlers = [
GuestsRemoveKeyboardHandler,
@ -32,6 +33,7 @@ const commandHandlers = [
IncreasePlayerWinningRateCommandHandler,
GetGuestPropertyHandler,
SetGuestPropertyCommandHandler,
IncreasePlayerScoreCommandHandler,
];

View file

@ -23,7 +23,6 @@ export class QuizController {
@Post('proceed')
async Get() {
console.log('proceed with game')
return this.quizService.proceedWithGame();
}

View file

@ -16,6 +16,7 @@ import {CreateNewQueueItemCommand} from "../game/commands/create-new-queue-item.
import {GameQueueTypes} from "../schemas/game-queue.schema";
import {IncreasePlayerWinningRateCommand} from "../game/commands/increase-player-winning-rate.command";
import {SocketEvents} from "../shared/events.consts";
import {IncreasePlayerScoreCommand} from "../guests/command/increase-player-score.command";
@Injectable({ scope: Scope.TRANSIENT })
export class QuizService {
@ -79,9 +80,7 @@ export class QuizService {
valid: isAnswerValid,
time: new Date()
})
console.log(question);
await question.save();
console.log(question);
this.logger.verbose("question saved with user details")
if (question.valid === filtered) {
//question.answered = true;
@ -136,7 +135,6 @@ export class QuizService {
time: answer.time.getTime()
}
});
console.log(playerAnswers);
const sortedAnswers = playerAnswers.sort((a, b) => a.time - b.time);
const winner = sortedAnswers.find((answer) => answer.valid);
let targetUser = 0;
@ -144,7 +142,8 @@ export class QuizService {
const totalWinningScore = 80;
sortedAnswers.filter(x => x.valid).forEach((answer) => {
this.commandBus.execute(new IncreasePlayerWinningRateCommand(answer.user,
totalWinningScore / sortedAnswers.filter((answer) => answer.valid).length))
totalWinningScore / sortedAnswers.filter((answer) => answer.valid).length));
this.commandBus.execute(new IncreasePlayerScoreCommand(answer.user,1));
});
await this.commandBus.execute(new IncreasePlayerWinningRateCommand(sortedAnswers[0].user, 15));
targetUser = winner.user;