From 1dfdedee91444c52a39d9c851a4a8e6272366c70 Mon Sep 17 00:00:00 2001
From: Phan Huy Tran
Date: Wed, 21 May 2025 09:49:09 +0200
Subject: [PATCH] fix: delete orhpaned blackjack games
---
.../casino/blackjack/BlackJackService.java | 52 +++++++++++--------
1 file changed, 30 insertions(+), 22 deletions(-)
diff --git a/backend/src/main/java/de/szut/casino/blackjack/BlackJackService.java b/backend/src/main/java/de/szut/casino/blackjack/BlackJackService.java
index cb31352..d0a3839 100644
--- a/backend/src/main/java/de/szut/casino/blackjack/BlackJackService.java
+++ b/backend/src/main/java/de/szut/casino/blackjack/BlackJackService.java
@@ -35,8 +35,8 @@ public class BlackJackService {
game.setState(getState(game));
deductBetFromBalance(user, betAmount);
-
- return blackJackGameRepository.save(game);
+
+ return processGameBasedOnState(game);
}
@Transactional
@@ -44,12 +44,11 @@ public class BlackJackService {
if (game.getState() != BlackJackState.IN_PROGRESS) {
return game;
}
-
+
dealCardToPlayer(game);
-
updateGameStateAndBalance(game);
-
- return blackJackGameRepository.save(game);
+
+ return processGameBasedOnState(game);
}
@Transactional
@@ -57,11 +56,11 @@ public class BlackJackService {
if (game.getState() != BlackJackState.IN_PROGRESS) {
return game;
}
-
+
dealCardsToDealerUntilMinimumScore(game);
determineWinnerAndUpdateBalance(game);
-
- return blackJackGameRepository.save(game);
+
+ return processGameBasedOnState(game);
}
@Transactional
@@ -69,50 +68,59 @@ public class BlackJackService {
if (game.getState() != BlackJackState.IN_PROGRESS || game.getPlayerCards().size() != 2) {
return game;
}
-
+
UserEntity user = getUserWithFreshData(game.getUser());
BigDecimal additionalBet = game.getBet();
-
+
deductBetFromBalance(user, additionalBet);
game.setBet(game.getBet().add(additionalBet));
-
+
dealCardToPlayer(game);
updateGameStateAndBalance(game);
-
+
if (game.getState() == BlackJackState.IN_PROGRESS) {
return stand(game);
}
-
+
return game;
}
@Transactional
public BlackJackGameEntity split(BlackJackGameEntity game) {
- if (game.getState() != BlackJackState.IN_PROGRESS ||
- game.getPlayerCards().size() != 2 ||
+ if (game.getState() != BlackJackState.IN_PROGRESS ||
+ game.getPlayerCards().size() != 2 ||
game.isSplit() ||
!game.getPlayerCards().get(0).getRank().equals(game.getPlayerCards().get(1).getRank())) {
return game;
}
-
+
UserEntity user = getUserWithFreshData(game.getUser());
BigDecimal splitBet = game.getBet();
-
+
if (user.getBalance().compareTo(splitBet) < 0) {
return game;
}
-
+
deductBetFromBalance(user, splitBet);
game.setSplitBet(splitBet);
game.setSplit(true);
-
+
CardEntity card = game.getPlayerCards().remove(1);
card.setCardType(CardType.PLAYER_SPLIT);
game.getPlayerSplitCards().add(card);
-
+
dealCardToPlayer(game);
dealCardToSplitHand(game);
-
+
+ return blackJackGameRepository.save(game);
+ }
+
+ private BlackJackGameEntity processGameBasedOnState(BlackJackGameEntity game) {
+ if (game.getState() != BlackJackState.IN_PROGRESS) {
+ this.blackJackGameRepository.delete(game);
+ return game;
+ }
+
return blackJackGameRepository.save(game);
}