From 800093309a3e8af6b89f4ea51e04cae40f568664 Mon Sep 17 00:00:00 2001
From: Hendrik Jungnitsch <hendrik.jungnitsch@gedoplan.de>
Date: Mo, 14 Nov 2022 11:51:19 +0100
Subject: [PATCH] exercise10

---
 src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailOrderService.java  |    6 ++++++
 src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailSelectChecker.java |   25 +++++++++++++++++++++++++
 2 files changed, 31 insertions(+), 0 deletions(-)

diff --git a/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailOrderService.java b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailOrderService.java
index 2028b91..731efb8 100644
--- a/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailOrderService.java
+++ b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailOrderService.java
@@ -5,6 +5,7 @@
 import de.gedoplan.seminar.sbt.di.exercise.repository.CocktailOrderRepository;
 import de.gedoplan.seminar.sbt.di.exercise.repository.CocktailRepository;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -16,6 +17,9 @@
 
   @Autowired
   CocktailRepository cocktailRepository;
+
+  @Autowired
+  private ApplicationEventPublisher eventPublisher;
 
   public Integer createNewOrder() {
     CocktailOrder cocktailOrder = new CocktailOrder();
@@ -31,6 +35,8 @@
     Cocktail cocktail = cocktailRepository.findById(cocktailId)
             .orElseThrow(() -> new IllegalArgumentException());
 
+    eventPublisher.publishEvent(cocktail);
+
     cocktailOrder.addCocktail(cocktailId);
   }
 
diff --git a/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailSelectChecker.java b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailSelectChecker.java
new file mode 100644
index 0000000..fb92716
--- /dev/null
+++ b/src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailSelectChecker.java
@@ -0,0 +1,25 @@
+package de.gedoplan.seminar.sbt.di.exercise.service;
+
+import de.gedoplan.seminar.sbt.di.exercise.domain.Cocktail;
+import de.gedoplan.seminar.sbt.di.exercise.exception.OutOfStockException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.event.EventListener;
+import org.springframework.stereotype.Component;
+
+import static java.util.function.Predicate.not;
+
+@Component
+public class CocktailSelectChecker {
+
+    @Autowired
+    IngredientService ingredientService;
+
+    @EventListener
+    public void select(Cocktail cocktail) {
+        ingredientService.beveragesNotAvailable(cocktail)
+                        .stream().findFirst().ifPresent(beverage -> {
+                    throw new OutOfStockException(beverage);
+                });
+    }
+}
+

--
Gitblit v1.7.1