From 68573cfb8e3afb470b3c7e2f59fa7310892ea6f3 Mon Sep 17 00:00:00 2001 From: Lennart Heinrich Date: Sat, 1 Nov 2025 01:24:08 +0100 Subject: [PATCH] filter query + show seats --- pom.xml | 7 ++- .../backend/endpoint/MovieImporter.java | 5 +-- .../backend/endpoint/ShowSeats.java | 44 +++++++++++++++++++ 3 files changed, 51 insertions(+), 5 deletions(-) create mode 100644 src/main/java/de/infinimotion/backend/endpoint/ShowSeats.java 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); + } + +}