filter query + show seats

This commit is contained in:
2025-11-01 01:24:08 +01:00
parent 94c28c2612
commit 68573cfb8e
3 changed files with 51 additions and 5 deletions

View File

@@ -35,7 +35,7 @@
<dependency>
<groupId>de.infinimotion</groupId>
<artifactId>model-backend</artifactId>
<version>0.0.76</version>
<version>0.0.83</version>
</dependency>
<!-- Quarkus -->
@@ -71,6 +71,11 @@
<groupId>io.quarkus</groupId>
<artifactId>quarkus-scheduler</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.32</version>
</dependency>
<!-- Test -->
<dependency>

View File

@@ -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;

View File

@@ -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<String, List<Sitzplatz>> 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<Sitzplatz> 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<Eintrittskarte> tickets = CommandListEintrittskarteResponse.deserialize(requester.request(requestTicketsWrapper)).getList();
List<Sitzplatz> reservedSeats = tickets.stream()
.filter(ticket -> ticket.getCancelled() == null && ticket.getReserved() != null)
.map(Eintrittskarte::getSeat).toList();
List<Sitzplatz> bookedSeats = tickets.stream()
.filter(ticket -> ticket.getCancelled() == null && ticket.getBooked() != null)
.map(Eintrittskarte::getSeat).toList();
return Map.of("seats", seats, "reserved", reservedSeats, "booked", bookedSeats);
}
}