diff --git a/backend/src/main/java/de/szut/casino/CasinoApplication.java b/backend/src/main/java/de/szut/casino/CasinoApplication.java index 68e2ebe..1d7e861 100644 --- a/backend/src/main/java/de/szut/casino/CasinoApplication.java +++ b/backend/src/main/java/de/szut/casino/CasinoApplication.java @@ -26,4 +26,65 @@ public class CasinoApplication { public static RestTemplate restTemplate() { return new RestTemplate(); } + + @Bean + public CommandLineRunner initData(LootBoxRepository lootBoxRepository, RewardRepository rewardRepository) { + return _ -> { + if (lootBoxRepository.count() == 0) { + LootBoxEntity basicLootBox = new LootBoxEntity(); + basicLootBox.setName("Basic LootBox"); + basicLootBox.setPrice(new BigDecimal("2")); + basicLootBox.setRewards(new ArrayList<>()); // Initialize the list + + LootBoxEntity premiumLootBox = new LootBoxEntity(); + premiumLootBox.setName("Premium LootBox"); + premiumLootBox.setPrice(new BigDecimal("5")); + premiumLootBox.setRewards(new ArrayList<>()); // Initialize the list + + lootBoxRepository.saveAll(Arrays.asList(basicLootBox, premiumLootBox)); + + RewardEntity commonReward = new RewardEntity(); + commonReward.setValue(new BigDecimal("0.50")); + commonReward.setProbability(new BigDecimal("0.7")); + + RewardEntity rareReward = new RewardEntity(); + rareReward.setValue(new BigDecimal("2.00")); + rareReward.setProbability(new BigDecimal("0.25")); + + RewardEntity epicReward = new RewardEntity(); + epicReward.setValue(new BigDecimal("5.00")); + epicReward.setProbability(new BigDecimal("0.5")); + + RewardEntity premiumCommon = new RewardEntity(); + premiumCommon.setValue(new BigDecimal("2.00")); + premiumCommon.setProbability(new BigDecimal("0.6")); + + RewardEntity premiumRare = new RewardEntity(); + premiumRare.setValue(new BigDecimal("5.00")); + premiumRare.setProbability(new BigDecimal("0.3")); + + RewardEntity legendaryReward = new RewardEntity(); + legendaryReward.setValue(new BigDecimal("15.00")); + legendaryReward.setProbability(new BigDecimal("0.10")); + + rewardRepository.saveAll(Arrays.asList( + commonReward, rareReward, epicReward, + premiumCommon, premiumRare, legendaryReward + )); + + basicLootBox.getRewards().add(commonReward); + basicLootBox.getRewards().add(premiumRare); + + premiumLootBox.getRewards().add(premiumCommon); + premiumLootBox.getRewards().add(premiumRare); + premiumLootBox.getRewards().add(legendaryReward); + + lootBoxRepository.saveAll(Arrays.asList(basicLootBox, premiumLootBox)); + + System.out.println("Initial LootBoxes and rewards created successfully"); + } else { + System.out.println("LootBoxes already exist, skipping initialization"); + } + }; + } } diff --git a/backend/src/main/java/de/szut/casino/lootboxes/CreateLootBoxDto.java b/backend/src/main/java/de/szut/casino/lootboxes/CreateLootBoxDto.java deleted file mode 100644 index 10e1b4e..0000000 --- a/backend/src/main/java/de/szut/casino/lootboxes/CreateLootBoxDto.java +++ /dev/null @@ -1,30 +0,0 @@ -package de.szut.casino.lootboxes; - -import jakarta.validation.constraints.DecimalMin; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; - -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class CreateLootBoxDto { - @NotEmpty(message = "Loot box name cannot be empty") - @Size(min = 3, max = 50, message = "Loot box name must be between 3 and 50 characters") - private String name; - - @NotNull(message = "Price cannot be null") - @DecimalMin(value = "0.01", message = "Price must be greater than 0") - private BigDecimal price; - - private List rewards = new ArrayList<>(); -} diff --git a/backend/src/main/java/de/szut/casino/lootboxes/CreateRewardDto.java b/backend/src/main/java/de/szut/casino/lootboxes/CreateRewardDto.java deleted file mode 100644 index 0dbe819..0000000 --- a/backend/src/main/java/de/szut/casino/lootboxes/CreateRewardDto.java +++ /dev/null @@ -1,26 +0,0 @@ -package de.szut.casino.lootboxes; - -import jakarta.validation.constraints.DecimalMax; -import jakarta.validation.constraints.DecimalMin; -import jakarta.validation.constraints.NotNull; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -import java.math.BigDecimal; - -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class CreateRewardDto { - @NotNull(message = "Reward value cannot be null") - @DecimalMin(value = "0.00", message = "Reward value must be positive") - private BigDecimal value; - - @NotNull(message = "Probability cannot be null") - @DecimalMin(value = "0.0", message = "Probability must be at least 0.0") - @DecimalMax(value = "1.0", message = "Probability must be at most 1.0") - private BigDecimal probability; -} diff --git a/backend/src/main/java/de/szut/casino/lootboxes/LootBoxController.java b/backend/src/main/java/de/szut/casino/lootboxes/LootBoxController.java index 2d4309d..51a17e1 100644 --- a/backend/src/main/java/de/szut/casino/lootboxes/LootBoxController.java +++ b/backend/src/main/java/de/szut/casino/lootboxes/LootBoxController.java @@ -3,11 +3,13 @@ package de.szut.casino.lootboxes; import de.szut.casino.user.UserEntity; import de.szut.casino.user.UserRepository; import de.szut.casino.user.UserService; -import jakarta.validation.Valid; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; @RestController public class LootBoxController { @@ -53,37 +55,4 @@ public class LootBoxController { return ResponseEntity.ok(reward); } - - @PostMapping("/lootboxes") - public ResponseEntity createLootbox(@RequestBody @Valid CreateLootBoxDto createLootBoxDto) { - List rewardEntities = new ArrayList<>(); - - for (CreateRewardDto createRewardDto : createLootBoxDto.getRewards()) { - rewardEntities.add(new RewardEntity(createRewardDto.getValue(), createRewardDto.getProbability())); - } - - LootBoxEntity lootBoxEntity = new LootBoxEntity( - createLootBoxDto.getName(), - createLootBoxDto.getPrice(), - rewardEntities - ); - - this.lootBoxRepository.save(lootBoxEntity); - - return ResponseEntity.ok(lootBoxEntity); - } - - @DeleteMapping("/lootboxes/{id}") - public ResponseEntity deleteLootbox(@PathVariable Long id) { - Optional optionalLootBox = lootBoxRepository.findById(id); - if (optionalLootBox.isEmpty()) { - return ResponseEntity.notFound().build(); - } - - LootBoxEntity lootBox = optionalLootBox.get(); - lootBoxRepository.delete(lootBox); - - return ResponseEntity.ok(Collections.singletonMap("message", "successfully deleted lootbox")); - } - } diff --git a/backend/src/main/java/de/szut/casino/lootboxes/LootBoxEntity.java b/backend/src/main/java/de/szut/casino/lootboxes/LootBoxEntity.java index eb5b93a..49eb532 100644 --- a/backend/src/main/java/de/szut/casino/lootboxes/LootBoxEntity.java +++ b/backend/src/main/java/de/szut/casino/lootboxes/LootBoxEntity.java @@ -18,15 +18,9 @@ import java.util.List; @Entity @Getter @Setter +@AllArgsConstructor @NoArgsConstructor public class LootBoxEntity { - - public LootBoxEntity(String name, BigDecimal price, List rewards) { - this.name = name; - this.price = price; - this.rewards = rewards; - } - @Id @GeneratedValue private Long id; diff --git a/backend/src/main/java/de/szut/casino/lootboxes/RewardEntity.java b/backend/src/main/java/de/szut/casino/lootboxes/RewardEntity.java index c69390c..ce0c155 100644 --- a/backend/src/main/java/de/szut/casino/lootboxes/RewardEntity.java +++ b/backend/src/main/java/de/szut/casino/lootboxes/RewardEntity.java @@ -4,7 +4,6 @@ import com.fasterxml.jackson.annotation.JsonBackReference; import com.fasterxml.jackson.annotation.JsonManagedReference; import jakarta.persistence.*; import lombok.Getter; -import lombok.NoArgsConstructor; import lombok.Setter; import java.math.BigDecimal; @@ -14,14 +13,7 @@ import java.util.List; @Getter @Setter @Entity -@NoArgsConstructor public class RewardEntity { - - public RewardEntity(BigDecimal value, BigDecimal probability) { - this.value = value; - this.probability = probability; - } - @Id @GeneratedValue private Long id;