diff --git a/src/main/java/de/infinimotion/backend/endpoint/OrderTx.java b/src/main/java/de/infinimotion/backend/endpoint/OrderTx.java index 2c159f5..c8ffb65 100644 --- a/src/main/java/de/infinimotion/backend/endpoint/OrderTx.java +++ b/src/main/java/de/infinimotion/backend/endpoint/OrderTx.java @@ -6,6 +6,9 @@ import jakarta.inject.Inject; import jakarta.ws.rs.POST; import jakarta.ws.rs.Path; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.LinkedList; import java.util.List; import java.util.Objects; @@ -24,6 +27,8 @@ public class OrderTx { int showId = orderTransaction.getTickets().stream().findAny().map(Eintrittskarte::getShow).map(Vorstellung::getId).orElse(-1); if (orderTransaction.getTickets().stream().anyMatch(ticket -> ticket.getShow().getId() != showId)) { throw new IllegalArgumentException("tickets for different show ids"); + } else if (orderTransaction.getTickets().getFirst().getShow().getStart().isBefore(LocalDateTime.ofInstant(Instant.now(), ZoneId.systemDefault()))) { + throw new IllegalStateException("show already started"); } List notCancelledTicketsFilter = List.of("eq;show.id;int;" + showId, "null;order.cancelled;date;1970-01-01T00:00:00");