diff --git a/backend/src/main/spoonaccular/AmountConversion.java b/backend/src/main/spoonaccular/AmountConversion.java index ae2593a..64ed9c8 100644 --- a/backend/src/main/spoonaccular/AmountConversion.java +++ b/backend/src/main/spoonaccular/AmountConversion.java @@ -21,14 +21,19 @@ public class AmountConversion { Request request = APIAuthentication.addAuthHeaders( new Request.Builder() .url("https://" + dotenv.get("X-RapidAPI-Host") + - "recipes/convert?ingredientName=" + ingrdientName + + "/recipes/convert?ingredientName=" + ingrdientName + "&targetUnit=" + targetUnit + "&sourceUnit=" + sourceUnit + "&sourceAmount=" + sourceAmount) ).build(); Response response = client.newCall(request).execute(); String responseString = response.body().string(); - return new ObjectMapper().readValue(responseString, ConvertedAmount.class).getTargetAmount(); + try { + return new ObjectMapper().readValue(responseString, ConvertedAmount.class).getTargetAmount(); + } catch (Exception e){ + return 0; + } + } } diff --git a/backend/src/main/whattocook/controller/IngredientController.java b/backend/src/main/whattocook/controller/IngredientController.java index 9a5a0f6..32d033e 100644 --- a/backend/src/main/whattocook/controller/IngredientController.java +++ b/backend/src/main/whattocook/controller/IngredientController.java @@ -13,6 +13,7 @@ import whattocook.models.Item; import whattocook.services.ItemService; import java.io.IOException; +import java.util.LinkedList; import java.util.List; import java.util.Optional; @@ -24,10 +25,11 @@ public class IngredientController { ItemService itemService; @DeleteMapping("/ingredient/removeRecipeIngredients") - public void removeRecipeIngredients(@RequestParam int id) throws IOException, JSONException { + public List removeRecipeIngredients(@RequestParam int id) throws IOException, JSONException { List ingredientList = RecipeInformation.getIngredientList(id); + List changedItemList = new LinkedList<>(); for (Ingredient ingredient : ingredientList){ - Optional possibleItem = itemService.findByName(ingredient.getName()); + Optional possibleItem = itemService.findByNameIgnoreCaseContaining(ingredient.getName()); if (possibleItem.isPresent()){ Item item = possibleItem.get(); double newItemQuantity; @@ -42,12 +44,15 @@ public class IngredientController { newItemQuantity = item.getQuantity() - ingridientAmount; } if (newItemQuantity > 0){ - item.setQuantity(newItemQuantity); + item.setQuantity(newItemQuantity); + itemService.save(item); } else { itemService.deleteById(item.getId()); } + changedItemList.add(item); } } + return changedItemList; } diff --git a/backend/src/main/whattocook/implementation/ItemServiceImpl.java b/backend/src/main/whattocook/implementation/ItemServiceImpl.java index 5b174b7..b9d364c 100644 --- a/backend/src/main/whattocook/implementation/ItemServiceImpl.java +++ b/backend/src/main/whattocook/implementation/ItemServiceImpl.java @@ -34,6 +34,11 @@ public class ItemServiceImpl implements ItemService { return itemRepository.findByName(name); } + @Override + public Optional findByNameIgnoreCaseContaining(String name) { + return itemRepository.findByNameIgnoreCaseContaining(name); + } + @Override public Iterable findAll() { return itemRepository.findAll(); diff --git a/backend/src/main/whattocook/models/Unit.java b/backend/src/main/whattocook/models/Unit.java index ed37377..debc25c 100644 --- a/backend/src/main/whattocook/models/Unit.java +++ b/backend/src/main/whattocook/models/Unit.java @@ -1,6 +1,6 @@ package whattocook.models; public enum Unit { - GRAMMS, - MILLILETERS + g, + ml } diff --git a/backend/src/main/whattocook/repositories/ItemRepository.java b/backend/src/main/whattocook/repositories/ItemRepository.java index d9caa8a..2bb11fc 100644 --- a/backend/src/main/whattocook/repositories/ItemRepository.java +++ b/backend/src/main/whattocook/repositories/ItemRepository.java @@ -9,4 +9,5 @@ import java.util.Optional; @Repository public interface ItemRepository extends CrudRepository { Optional findByName(String name); + Optional findByNameIgnoreCaseContaining(String name); } diff --git a/backend/src/main/whattocook/services/ItemService.java b/backend/src/main/whattocook/services/ItemService.java index 5db566f..b1a5cbf 100644 --- a/backend/src/main/whattocook/services/ItemService.java +++ b/backend/src/main/whattocook/services/ItemService.java @@ -9,5 +9,6 @@ public interface ItemService { void deleteById(Long id); Optional findById(long id); Optional findByName(String name); + Optional findByNameIgnoreCaseContaining(String name); Iterable findAll(); } diff --git a/backend/src/test/java/items/ItemTests.java b/backend/src/test/java/items/ItemTests.java index ff27ce7..af91a6f 100644 --- a/backend/src/test/java/items/ItemTests.java +++ b/backend/src/test/java/items/ItemTests.java @@ -29,14 +29,14 @@ final class ItemTests { @Test public void saveTest() { - Item item = new Item("kartoffel", Unit.GRAMMS, 5000); + Item item = new Item("kartoffel", Unit.g, 5000); itemRepository.save(item); assertTrue(itemRepository.existsById(item.getId())); } @Test public void findByIDTest() { - Item item = new Item("tortillias", Unit.GRAMMS, 5000); + Item item = new Item("tortillias", Unit.g, 5000); itemRepository.save(item); assertEquals(item, itemRepository.findById(item.getId()).get()); } @@ -49,7 +49,7 @@ final class ItemTests { @Test public void findByNameTest(){ - Item item = new Item("tortillias", Unit.GRAMMS, 5000); + Item item = new Item("tortillias", Unit.g, 5000); itemRepository.save(item); assertEquals(item, itemRepository.findByName(item.getName()).get()); } @@ -57,11 +57,11 @@ final class ItemTests { @Test public void findAllTest() { List savedItems = new ArrayList(); - savedItems.add( new Item("nachos", Unit.GRAMMS, 5000)); - savedItems.add( new Item("wurst", Unit.GRAMMS, 5000)); - savedItems.add( new Item("schinken", Unit.GRAMMS, 5000)); - savedItems.add( new Item("brokkoli", Unit.GRAMMS, 5000)); - savedItems.add( new Item("eiscreme", Unit.GRAMMS, 5000)); + savedItems.add( new Item("nachos", Unit.g, 5000)); + savedItems.add( new Item("wurst", Unit.g, 5000)); + savedItems.add( new Item("schinken", Unit.g, 5000)); + savedItems.add( new Item("brokkoli", Unit.g, 5000)); + savedItems.add( new Item("eiscreme", Unit.g, 5000)); itemRepository.saveAll(savedItems); @@ -71,7 +71,7 @@ final class ItemTests { @Test public void deleteTest() { - Item item = new Item("elefantenfuß", Unit.GRAMMS, 5000); + Item item = new Item("elefantenfuß", Unit.g, 5000); itemRepository.save(item); assertEquals(item, itemRepository.findById(item.getId()).get()); itemRepository.delete(item); @@ -80,7 +80,7 @@ final class ItemTests { @Test public void updateTest() { - Item item = new Item("schokoküsse", Unit.GRAMMS, 5000); + Item item = new Item("schokoküsse", Unit.g, 5000); itemRepository.save(item); long itemCount = itemRepository.count(); item.setQuantity(4574); diff --git a/build.gradle b/build.gradle index 57002e6..7409ee6 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'org.springframework.boot' version '2.6.7' + id 'org.springframework.boot' version '2.7.1' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' }