diff --git a/pom.xml b/pom.xml
index 1bb3bc2..30adabb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,7 +35,7 @@
de.infinimotion
model-backend
- 0.0.101
+ 0.0.110
diff --git a/src/main/java/de/infinimotion/backend/endpoint/OrderTx.java b/src/main/java/de/infinimotion/backend/endpoint/OrderTx.java
new file mode 100644
index 0000000..6a6efa2
--- /dev/null
+++ b/src/main/java/de/infinimotion/backend/endpoint/OrderTx.java
@@ -0,0 +1,44 @@
+package de.infinimotion.backend.endpoint;
+
+import de.infinimotion.model.backend.*;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.Path;
+
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+
+@ApplicationScoped
+@Path("/order-transaction")
+public class OrderTx {
+
+ @Inject
+ RequestReply requester;
+
+ @POST
+ @Path("/create")
+ public OrderTransaction createOrderTransaction(OrderTransaction orderTransaction) throws Exception {
+ CommandWrapper orderRequest = new CommandCreateBestellung(orderTransaction.getOrder()).serialize().generateIds();
+ Bestellung orderResponse = CommandCreateBestellungResponse.deserialize(requester.request(orderRequest)).getBestellung();
+
+ AtomicInteger countDown = new AtomicInteger(orderTransaction.getTickets().size());
+ List ticketResponses = orderTransaction.getTickets().stream().map(ticket -> {
+ try {
+ ticket.setOrder(orderResponse);
+ CommandWrapper ticketRequest = new CommandCreateEintrittskarte(ticket).serialize().tx(orderRequest);
+ if (countDown.decrementAndGet() == 0) {
+ ticketRequest.commit();
+ }
+ return CommandCreateEintrittskarteResponse.deserialize(requester.request(ticketRequest)).getEintrittskarte();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }).toList();
+
+ orderTransaction.setOrder(orderResponse);
+ orderTransaction.setTickets(ticketResponses);
+ return orderTransaction;
+ }
+
+}
diff --git a/src/main/java/de/infinimotion/backend/endpoint/Statistics.java b/src/main/java/de/infinimotion/backend/endpoint/Statistics.java
index 9b49181..7e038ea 100644
--- a/src/main/java/de/infinimotion/backend/endpoint/Statistics.java
+++ b/src/main/java/de/infinimotion/backend/endpoint/Statistics.java
@@ -15,10 +15,27 @@ public class Statistics {
@GET
@Path("/list")
- public CommandListStatisticsResponse list() throws Exception {
+ public StatisticsReduced list() throws Exception {
CommandListStatistics request = new CommandListStatistics();
CommandWrapper requestWrapper = request.serialize().generateIds().commit();
- return CommandListStatisticsResponse.deserialize(requester.request(requestWrapper));
+ CommandListStatisticsResponse response = CommandListStatisticsResponse.deserialize(requester.request(requestWrapper));
+
+ StatisticsReduced stats = new StatisticsReduced();
+ stats.setMovies(response.getMovies().stream().map(movieStats -> {
+ StatisticsFilmReduced reduced = new StatisticsFilmReduced();
+ reduced.setMovie(movieStats.getMovie());
+ reduced.setTickets(movieStats.getTickets().size());
+ reduced.setEarnings(movieStats.getEarnings());
+ return reduced;
+ }).toList());
+ stats.setShows(response.getShows().stream().map(showStats -> {
+ StatisticsVorstellungReduced reduced = new StatisticsVorstellungReduced();
+ reduced.setShow(showStats.getShow());
+ reduced.setTickets(showStats.getTickets().size());
+ reduced.setEarnings(showStats.getEarnings());
+ return reduced;
+ }).toList());
+ return stats;
}
}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 690aeaf..de107fa 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -20,6 +20,7 @@ mp.messaging.outgoing.command.connector=smallrye-kafka
mp.messaging.incoming.command-replies.connector=smallrye-kafka
mp.messaging.incoming.command-replies.auto.offset.reset=earliest
+mp.messaging.incoming.command-replies.assign-seek=0
omdb.api-key=2a3264fc
quarkus.rest-client.omdb-api.url=https://omdbapi.com/