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