From 31076fec845f20cb251935cfc4fe98f1455af80e Mon Sep 17 00:00:00 2001 From: dawoo <fd053@gmail.com> Date: Fri, 8 Dec 2023 00:24:13 +0100 Subject: [PATCH] =?UTF-8?q?Grandma=20Logic=20verbessert,=20Tipp=20des=20Ta?= =?UTF-8?q?ges=20sowie=20notifikation=20=C3=BCber=20Pflanze=20in=20der=20e?= =?UTF-8?q?igenen=20Wunschliste,=20die=20man=20jetzt=20einpflanzen=20kann,?= =?UTF-8?q?=20sind=20jetzt=20m=C3=B6glich?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controllers/GrandmaController.java | 11 ++- .../hdm/mi/growbros/models/user/User.java | 1 - .../mi/growbros/service/GrandmaService.java | 94 +++++++++++++------ 3 files changed, 71 insertions(+), 35 deletions(-) diff --git a/src/main/java/hdm/mi/growbros/controllers/GrandmaController.java b/src/main/java/hdm/mi/growbros/controllers/GrandmaController.java index d8a098a..0f2ad37 100644 --- a/src/main/java/hdm/mi/growbros/controllers/GrandmaController.java +++ b/src/main/java/hdm/mi/growbros/controllers/GrandmaController.java @@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController -@RequestMapping("/randomPlantInfo") +@RequestMapping("/api/v1/randomPlantInfo") public class GrandmaController { private final GrandmaService grandmaService; @@ -18,8 +18,11 @@ public class GrandmaController { } @GetMapping - public ResponseEntity<String> getRandomPlantInfo() { - String randomPlantInfo = grandmaService.getRandomPlantInfo(); - return ResponseEntity.ok(randomPlantInfo); + public ResponseEntity<String> getGrowingTipDesTages() { + return ResponseEntity.ok(grandmaService.growingTippDesTages()); + } + @GetMapping + public ResponseEntity<String> getPlantsReadyToGrow(){ + return ResponseEntity.ok(grandmaService.notifyAboutPlantsReadyToGrow()); } } diff --git a/src/main/java/hdm/mi/growbros/models/user/User.java b/src/main/java/hdm/mi/growbros/models/user/User.java index c0cc7b5..3230047 100644 --- a/src/main/java/hdm/mi/growbros/models/user/User.java +++ b/src/main/java/hdm/mi/growbros/models/user/User.java @@ -22,7 +22,6 @@ import java.util.List; @AllArgsConstructor @Entity @Table(name = "_user") -@Component public class User implements UserDetails { @Id @GeneratedValue diff --git a/src/main/java/hdm/mi/growbros/service/GrandmaService.java b/src/main/java/hdm/mi/growbros/service/GrandmaService.java index 5b30c9e..b628f9c 100644 --- a/src/main/java/hdm/mi/growbros/service/GrandmaService.java +++ b/src/main/java/hdm/mi/growbros/service/GrandmaService.java @@ -1,50 +1,84 @@ package hdm.mi.growbros.service; +import hdm.mi.growbros.models.WishListEntry; import hdm.mi.growbros.models.plant.Plant; -import hdm.mi.growbros.repositories.PlantRepository; +import hdm.mi.growbros.models.user.User; +import hdm.mi.growbros.repositories.WishListRepository; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; +import java.time.LocalDate; +import java.time.temporal.WeekFields; +import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Random; @Service public class GrandmaService { - private final PlantRepository plantRepository; - public GrandmaService (PlantRepository plantRepository){ - this.plantRepository = plantRepository; - } + private final GardenService gardenService; + + private final WishListRepository wishListRepository; + + + public GrandmaService (GardenService gardenService , WishListRepository wishListRepository){ - public String getRandomPlantInfo() { + this.gardenService = gardenService; + this.wishListRepository = wishListRepository; - String plantInfo = null; - List<Plant> plants = plantRepository.findAll(); + } + public String growingTippDesTages (){ + List<Plant> usersPlants = getPlantsInUserGarden(); + String tipDesTages; Random random = new Random(); - int randomNumber = random.nextInt(plants.size()); - Plant randomPLant = plants.get(randomNumber); - - - int randomNumber2 = random.nextInt(5); - switch (randomNumber2){ - case 0: - plantInfo = "Did u know that " + randomPLant.getName() + "Is a " + randomPLant.getDescription(); - break; - case 1: - plantInfo = "Did u know that " + randomPLant.getName() + "is originally from " + randomPLant.getOrigin(); - break; - case 2: - plantInfo = "Did u know that " + randomPLant.getName() + "is Planted from " + randomPLant.getPlantWeekStart() + "until " + randomPLant.getPlantWeekEnd(); - break; - case 3: - plantInfo = "Did u know that " + randomPLant.getName() + "is Harvested from " + randomPLant.getHarvestWeekStart() + "until " + randomPLant.getHarvestWeekEnd(); - break; - case 4: - plantInfo = "Did u know that " + randomPLant.getName() + "is Planted in " + randomPLant.getGrowingTips(); - break; + int randomNumber = random.nextInt(usersPlants.size()); + tipDesTages = "Tip des Tages für deinen Garten" + usersPlants.get(randomNumber).getGrowingTips(); + return tipDesTages; + } + public List<Plant> getPlantsInUserGarden() { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication != null) { + User user = (User) authentication.getPrincipal(); + return gardenService.getUserPlants(user, null); } - return plantInfo; + return null; } + public List<Plant> getPlantsReadyToGrow(){ + LocalDate today = LocalDate.now(); + int weekNumber = today.get(WeekFields.of(Locale.getDefault()).weekOfWeekBasedYear()); + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication != null) { + User user = (User) authentication.getPrincipal(); + List<WishListEntry> wishListEntries = wishListRepository.findByCurrentPlantingWeek(user,weekNumber); + List<Plant> plantsReadyToGrow = new ArrayList<>(); + for (WishListEntry entry : wishListEntries) { + plantsReadyToGrow.add(entry.getPlant()); + return plantsReadyToGrow; } + } + return null; + } + + public String notifyAboutPlantsReadyToGrow () { + List<Plant> plantsReadyToGrow = getPlantsReadyToGrow(); + if (plantsReadyToGrow.isEmpty()) { + return null; + } + StringBuilder notification = new StringBuilder("Diese Pflanzen in deiner Wunschliste wären bereit zum Einpflanzen: "); + int size = plantsReadyToGrow.size(); + for (int i = 0; i < size; i++) { + notification.append(plantsReadyToGrow.get(i).getName()); + if (i < size - 2) { + notification.append(", "); + } else if (i == size - 2) { + notification.append(" und "); + } + } + return notification.toString(); + } + } -- GitLab