From e04c1b6c3f9b68204a1b9210b3b43a095b27395c Mon Sep 17 00:00:00 2001
From: Anders Austlid <andemau@ntnu.no>
Date: Tue, 25 Apr 2023 12:56:22 +0200
Subject: [PATCH] Fridge controller endpoints added

---
 .../controller/group/FridgeController.java    | 22 ++++++++++++++-----
 .../SmartMat/service/group/FridgeService.java | 16 +++++++++++---
 2 files changed, 29 insertions(+), 9 deletions(-)

diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/FridgeController.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/FridgeController.java
index fb012aae..6e6ce1e9 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/FridgeController.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/FridgeController.java
@@ -51,10 +51,15 @@ public class FridgeController {
         } catch (Exception e) {
             return ResponseEntity.notFound().build();
         }
-        if (fridgeService.addProductToFridge(groupId, productId)) {
-            return ResponseEntity.ok("Success");
+
+        try {
+            if (fridgeService.addProductToFridge(groupId, productId)) {
+                return ResponseEntity.ok("Success");
+            }
+            return ResponseEntity.badRequest().body("Product already exists in the fridge");
+        } catch (Exception e) {
+            return ResponseEntity.status(500).body("Internal server error");
         }
-        return ResponseEntity.badRequest().build();
     }
 
     /**
@@ -73,10 +78,15 @@ public class FridgeController {
         } catch (Exception e) {
             return ResponseEntity.notFound().build();
         }
-        if (fridgeService.removeProductFromFridge(groupId, productId)) {
-            return ResponseEntity.ok("Success");
+
+        try {
+            if (fridgeService.removeProductFromFridge(groupId, productId)) {
+                return ResponseEntity.ok("Success");
+            }
+            return ResponseEntity.badRequest().body("Product not found in the fridge");
+        } catch (Exception e) {
+            return ResponseEntity.status(500).body("Internal server error");
         }
-        return ResponseEntity.badRequest().build();
     }
 
 }
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/FridgeService.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/FridgeService.java
index 3ac79436..c36c8084 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/FridgeService.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/FridgeService.java
@@ -44,8 +44,13 @@ public class FridgeService {
     public boolean addProductToFridge(long groupId, long ean) {
         Optional<Product> product = productService.getProductById(ean);
         Fridge fridge = fridgeRepository.findByGroupId(groupId).orElseThrow(() -> new IllegalArgumentException("Fridge does not exist"));
-        if(product.isPresent()) {
-            fridge.getProducts().add(product.get());
+
+        if (product.isPresent()) {
+            Product productToAdd = product.get();
+            if (fridge.getProducts().contains(productToAdd)) {
+                return false;
+            }
+            fridge.getProducts().add(productToAdd);
             fridgeRepository.save(fridge);
             return true;
         } else {
@@ -64,8 +69,13 @@ public class FridgeService {
     public boolean removeProductFromFridge(long groupId, long ean) {
         Optional<Product> product = productService.getProductById(ean);
         Fridge fridge = fridgeRepository.findByGroupId(groupId).orElseThrow(() -> new IllegalArgumentException("Fridge does not exist"));
+
         if (product.isPresent()) {
-            fridge.getProducts().remove(product.get());
+            Product productToRemove = product.get();
+            if (!fridge.getProducts().contains(productToRemove)) {
+                return false;
+            }
+            fridge.getProducts().remove(productToRemove);
             fridgeRepository.save(fridge);
             return true;
         } else {
-- 
GitLab