diff --git a/pom.xml b/pom.xml
index 61ac5af..e7b4b9f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,7 +35,7 @@
de.infinimotion
model-backend
- 0.0.76
+ 0.0.83
@@ -71,6 +71,11 @@
io.quarkus
quarkus-scheduler
+
+ org.projectlombok
+ lombok
+ 1.18.32
+
diff --git a/src/main/java/de/infinimotion/backend/endpoint/MovieImporter.java b/src/main/java/de/infinimotion/backend/endpoint/MovieImporter.java
index d21baff..473af69 100644
--- a/src/main/java/de/infinimotion/backend/endpoint/MovieImporter.java
+++ b/src/main/java/de/infinimotion/backend/endpoint/MovieImporter.java
@@ -7,6 +7,7 @@ import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.QueryParam;
+import lombok.EqualsAndHashCode;
import org.eclipse.microprofile.rest.client.inject.RestClient;
import java.util.Arrays;
@@ -16,10 +17,6 @@ import java.util.List;
@Path("/importer")
public class MovieImporter {
- /*
- Schnittstelle Abfrage für Vorstellung: Liste mit allen Sitzplätzen mit gebucht/reserviert/frei
- */
-
@Inject
RequestReply requester;
diff --git a/src/main/java/de/infinimotion/backend/endpoint/ShowSeats.java b/src/main/java/de/infinimotion/backend/endpoint/ShowSeats.java
new file mode 100644
index 0000000..d6de939
--- /dev/null
+++ b/src/main/java/de/infinimotion/backend/endpoint/ShowSeats.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.GET;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+
+import java.util.*;
+
+@ApplicationScoped
+@Path("/show-seats")
+public class ShowSeats {
+
+ @Inject
+ RequestReply requester;
+
+ @GET
+ @Path("/{show}")
+ public Map> getShowSeats(@PathParam("show") int showId) throws Exception {
+ CommandGetVorstellung requestShow = new CommandGetVorstellung(showId);
+ CommandWrapper requestShowWrapper = requestShow.serialize().generateIds();
+ Vorstellung show = CommandGetVorstellungResponse.deserialize(requester.request(requestShowWrapper)).getVorstellung();
+
+ CommandListSitzplatz requestSeats = new CommandListSitzplatz(List.of("eq;row.hall.id;int;" + show.getHall().getId()));
+ CommandWrapper requestSeatsWrapper = requestSeats.serialize().tx(requestShowWrapper);
+ List seats = CommandListSitzplatzResponse.deserialize(requester.request(requestSeatsWrapper)).getList();
+
+ CommandListEintrittskarte requestTickets = new CommandListEintrittskarte(List.of("eq;show.id;int;" + showId));
+ CommandWrapper requestTicketsWrapper = requestTickets.serialize().tx(requestShowWrapper).commit();
+ List tickets = CommandListEintrittskarteResponse.deserialize(requester.request(requestTicketsWrapper)).getList();
+
+ List reservedSeats = tickets.stream()
+ .filter(ticket -> ticket.getCancelled() == null && ticket.getReserved() != null)
+ .map(Eintrittskarte::getSeat).toList();
+ List bookedSeats = tickets.stream()
+ .filter(ticket -> ticket.getCancelled() == null && ticket.getBooked() != null)
+ .map(Eintrittskarte::getSeat).toList();
+
+ return Map.of("seats", seats, "reserved", reservedSeats, "booked", bookedSeats);
+ }
+
+}