diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/product/ProductController.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/product/ProductController.java index be2ceaa5da6d94b5aad6f104beaa9cbe415bcb52..60cb1e88f0c17d219efb56c5c00c9151b4832ff8 100644 --- a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/product/ProductController.java +++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/product/ProductController.java @@ -12,6 +12,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -47,6 +48,8 @@ public class ProductController { .url(productRequest.image()) .build(); + + Category category = categoryService .getCategoryByName(CategoryUtil.defineCategory(product.getName(),product.getDescription())) .orElse(null); @@ -55,7 +58,6 @@ public class ProductController { return ResponseEntity.badRequest().build(); product.setCategory(category); - category.addProduct(product); if(productService.getProductById(productRequest.ean()).isPresent()) @@ -78,6 +80,8 @@ public class ProductController { } if(productRequest.allergies() != null){ + product.setAllergies(new ArrayList<>()); + productRequest.allergies().forEach(allergyName-> { allergyService.getAllergyByName(allergyName).ifPresent(allergy -> { product.addAllergy(allergy); @@ -120,6 +124,10 @@ public class ProductController { public ResponseEntity<String> deleteProduct(@PathVariable long ean) { Optional<Product> product = productService.getProductById(ean); if(product.isPresent()) { + product.get().getAllergies().stream().filter(allergy -> allergy.getProducts().contains(product.get())) + .forEach(allergy -> allergy.getProducts().remove(product.get())); + product.get().getAllergies().clear(); + productService.deleteProductById(product.get().getEan()); return ResponseEntity.ok("Product deleted"); }