diff --git a/backend/src/main/java/de/szut/casino/blackjack/BlackJackGameController.java b/backend/src/main/java/de/szut/casino/blackjack/BlackJackGameController.java index 0b385f1..0aab2cb 100644 --- a/backend/src/main/java/de/szut/casino/blackjack/BlackJackGameController.java +++ b/backend/src/main/java/de/szut/casino/blackjack/BlackJackGameController.java @@ -2,11 +2,9 @@ package de.szut.casino.blackjack; import de.szut.casino.blackjack.dto.CreateBlackJackGameDto; import de.szut.casino.user.UserEntity; -import de.szut.casino.user.UserRepository; import de.szut.casino.user.UserService; import jakarta.validation.Valid; import lombok.extern.slf4j.Slf4j; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -24,14 +22,10 @@ public class BlackJackGameController { private final UserService userService; private final BlackJackService blackJackService; - private final BlackJackGameRepository blackJackGameRepository; - private final UserRepository userRepository; - public BlackJackGameController(UserService userService, BlackJackService blackJackService, BlackJackGameRepository blackJackGameRepository, UserRepository userRepository) { - this.userService = userService; + public BlackJackGameController(UserService userService, BlackJackService blackJackService) { this.blackJackService = blackJackService; - this.blackJackGameRepository = blackJackGameRepository; - this.userRepository = userRepository; + this.userService = userService; } @PostMapping("/blackjack/start") @@ -58,23 +52,6 @@ public class BlackJackGameController { return ResponseEntity.badRequest().body(errorResponse); } - BlackJackGameEntity game = new BlackJackGameEntity(); - game.setUser(user); - game.setBet(betAmount); - - for (int i = 0; i < 2; i++) { - CardEntity playerCard = blackJackService.createRandomCard(game); - game.getPlayerCards().add(playerCard); - } - - CardEntity dealerCard = blackJackService.createRandomCard(game); - game.getDealerCards().add(dealerCard); - - user.setBalance(user.getBalance().subtract(betAmount)); - - userRepository.save(user); - blackJackGameRepository.save(game); - - return ResponseEntity.ok(game); + return ResponseEntity.ok(blackJackService.createBlackJackGame(user, betAmount)); } } 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 8defe57..ba5e7d1 100644 --- a/backend/src/main/java/de/szut/casino/blackjack/BlackJackService.java +++ b/backend/src/main/java/de/szut/casino/blackjack/BlackJackService.java @@ -1,13 +1,46 @@ package de.szut.casino.blackjack; +import de.szut.casino.user.UserEntity; +import de.szut.casino.user.UserRepository; import org.springframework.stereotype.Service; + +import java.math.BigDecimal; import java.util.Random; @Service public class BlackJackService { + private final BlackJackGameRepository blackJackGameRepository; + private final UserRepository userRepository; + + public BlackJackService(BlackJackGameRepository blackJackGameRepository, UserRepository userRepository) { + this.blackJackGameRepository = blackJackGameRepository; + this.userRepository = userRepository; + } + private final Random random = new Random(); - public CardEntity createRandomCard(BlackJackGameEntity game) { + public BlackJackGameEntity createBlackJackGame(UserEntity user, BigDecimal betAmount) { + BlackJackGameEntity game = new BlackJackGameEntity(); + game.setUser(user); + game.setBet(betAmount); + + for (int i = 0; i < 2; i++) { + CardEntity playerCard = createRandomCard(game); + game.getPlayerCards().add(playerCard); + } + + CardEntity dealerCard = createRandomCard(game); + game.getDealerCards().add(dealerCard); + + user.setBalance(user.getBalance().subtract(betAmount)); + + userRepository.save(user); + blackJackGameRepository.save(game); + + return game; + } + + private CardEntity createRandomCard(BlackJackGameEntity game) { CardEntity card = new CardEntity(); card.setGame(game); card.setSuit(Suit.values()[random.nextInt(Suit.values().length)]);