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 cb8f6fd..0b385f1 100644 --- a/backend/src/main/java/de/szut/casino/blackjack/BlackJackGameController.java +++ b/backend/src/main/java/de/szut/casino/blackjack/BlackJackGameController.java @@ -23,11 +23,13 @@ import java.util.Optional; public class BlackJackGameController { private final UserService userService; + private final BlackJackService blackJackService; private final BlackJackGameRepository blackJackGameRepository; private final UserRepository userRepository; - public BlackJackGameController(UserService userService, BlackJackGameRepository blackJackGameRepository, UserRepository userRepository) { + public BlackJackGameController(UserService userService, BlackJackService blackJackService, BlackJackGameRepository blackJackGameRepository, UserRepository userRepository) { this.userService = userService; + this.blackJackService = blackJackService; this.blackJackGameRepository = blackJackGameRepository; this.userRepository = userRepository; } @@ -60,6 +62,14 @@ public class BlackJackGameController { 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); diff --git a/backend/src/main/java/de/szut/casino/blackjack/BlackJackGameEntity.java b/backend/src/main/java/de/szut/casino/blackjack/BlackJackGameEntity.java index 9625c92..e3380a7 100644 --- a/backend/src/main/java/de/szut/casino/blackjack/BlackJackGameEntity.java +++ b/backend/src/main/java/de/szut/casino/blackjack/BlackJackGameEntity.java @@ -1,5 +1,7 @@ package de.szut.casino.blackjack; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonManagedReference; import de.szut.casino.user.UserEntity; import jakarta.persistence.*; import lombok.AllArgsConstructor; @@ -9,6 +11,7 @@ import lombok.Setter; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.List; @Entity @Getter @@ -19,9 +22,25 @@ public class BlackJackGameEntity { @Id @GeneratedValue private Long id; + @ManyToOne @JoinColumn(name = "user_id", nullable = false) + @JsonIgnore private UserEntity user; + + // Expose UserID to JSON output + public Long getUserId() { + return user != null ? user.getId() : null; + } + private String state; private BigDecimal bet; + + @OneToMany(mappedBy = "game", cascade = CascadeType.ALL, orphanRemoval = true) + @JsonManagedReference + private List playerCards = new ArrayList<>(); + + @OneToMany(mappedBy = "game", cascade = CascadeType.ALL, orphanRemoval = true) + @JsonManagedReference + private List dealerCards = new ArrayList<>(); } diff --git a/backend/src/main/java/de/szut/casino/blackjack/BlackJackService.java b/backend/src/main/java/de/szut/casino/blackjack/BlackJackService.java new file mode 100644 index 0000000..8defe57 --- /dev/null +++ b/backend/src/main/java/de/szut/casino/blackjack/BlackJackService.java @@ -0,0 +1,17 @@ +package de.szut.casino.blackjack; + +import org.springframework.stereotype.Service; +import java.util.Random; + +@Service +public class BlackJackService { + private final Random random = new Random(); + + public CardEntity createRandomCard(BlackJackGameEntity game) { + CardEntity card = new CardEntity(); + card.setGame(game); + card.setSuit(Suit.values()[random.nextInt(Suit.values().length)]); + card.setRank(Rank.values()[random.nextInt(Rank.values().length)]); + return card; + } +} diff --git a/backend/src/main/java/de/szut/casino/blackjack/CardEntity.java b/backend/src/main/java/de/szut/casino/blackjack/CardEntity.java index f03a5a1..8026d72 100644 --- a/backend/src/main/java/de/szut/casino/blackjack/CardEntity.java +++ b/backend/src/main/java/de/szut/casino/blackjack/CardEntity.java @@ -1,15 +1,33 @@ package de.szut.casino.blackjack; +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.fasterxml.jackson.annotation.JsonIgnore; +import jakarta.persistence.*; +import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +@Entity @Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor public class CardEntity { - private final Suit suit; - private final Rank rank; + @Id + @GeneratedValue + @JsonIgnore + private Long id; - public CardEntity(Suit suit, Rank rank) { - this.suit = suit; - this.rank = rank; - } + @ManyToOne + @JoinColumn(name = "game_id", nullable = false) + @JsonBackReference + private BlackJackGameEntity game; + + @Enumerated(EnumType.STRING) + private Suit suit; + + @Enumerated(EnumType.STRING) + private Rank rank; }