From b666285f8cf54dca04b1048a3b97daae9bbcfe22 Mon Sep 17 00:00:00 2001
From: Stian Lyng <stianlyng@protonmail.com>
Date: Thu, 27 Apr 2023 15:10:20 +0200
Subject: [PATCH] update fridge product

---
 .../controller/group/FridgeController.java    |  5 +++++
 .../dto/request/FridgeProductRequest.java     |  2 +-
 .../SmartMat/service/group/FridgeService.java | 21 +++++++++++++++++++
 3 files changed, 27 insertions(+), 1 deletion(-)

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 3ec4537a..c77f2164 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
@@ -35,6 +35,7 @@ public class FridgeController {
                 .orElseGet(() -> ResponseEntity.notFound().build());
     }
 
+
     /**
      * Gets the fridge by its fridge id
      * @param fridgeId the id of the fridge
@@ -59,6 +60,10 @@ public class FridgeController {
         return fridgeService.addProductToFridge(request).map(ResponseEntity::ok).orElseGet(()-> ResponseEntity.notFound().build());
     }
 
+    @PutMapping("/group/product")
+    public ResponseEntity<Object> updateProductInFridge(@RequestBody FridgeProductRequest request) {
+        return fridgeService.updateProductInFridge(request).map(ResponseEntity::ok).orElseGet(()-> ResponseEntity.notFound().build());
+    }
 
     @DeleteMapping("/group/delete/product/{fridgeProductId}/{amount}")
     public ResponseEntity<?> deleteAmountFridgeProduct(@PathVariable("fridgeProductId") long fridgeProductId,
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/FridgeProductRequest.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/FridgeProductRequest.java
index 9e5ad480..bbe5b871 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/FridgeProductRequest.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/request/FridgeProductRequest.java
@@ -5,5 +5,5 @@ package ntnu.idatt2016.v233.SmartMat.dto.request;
  * @param groupId the id of the group
  * @param productId the id of the product
  */
-public record FridgeProductRequest(long groupId, long ean, int amount, int days) {
+public record FridgeProductRequest(long fridgeProductId, long groupId, long ean, int amount, int days) {
 }
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 3665bc7e..aa8edf2a 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
@@ -10,6 +10,8 @@ import ntnu.idatt2016.v233.SmartMat.entity.product.Product;
 import ntnu.idatt2016.v233.SmartMat.repository.group.GroupRepository;
 import ntnu.idatt2016.v233.SmartMat.repository.product.FridgeProductAssoRepo;
 import ntnu.idatt2016.v233.SmartMat.service.product.ProductService;
+
+import org.springframework.context.annotation.aspectj.EnableSpringConfigured;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDate;
@@ -77,6 +79,25 @@ public class FridgeService {
         return Optional.of(product);
 
     }
+    
+    public Optional<Object> updateProductInFridge(FridgeProductRequest request) {
+        Optional<FridgeProductAsso> fridgeProductAsso = fridgeProductAssoRepo.findById(request.fridgeProductId());
+        if (fridgeProductAsso.isEmpty()) return Optional.empty();
+        
+        Integer amount = request.amount();
+        Integer days = request.days();
+
+        if (amount != null) fridgeProductAsso.get()
+                                .setAmount(request.amount());
+
+        if (days != null) fridgeProductAsso.get()
+                                .setDaysToExpiration(request.days());
+        
+        fridgeProductAssoRepo.save(fridgeProductAsso.get());
+
+        return Optional.of(fridgeProductAsso);
+    }
+
 
     /**
      * Remove a product from the fridge of a group
-- 
GitLab