Skip to content

Commit c922c5a

Browse files
committed
#464 handle back, fix test
1 parent c6ee21d commit c922c5a

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

src/main/java/alfio/controller/ReservationController.java

+12-6
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ public String validateToOverview(@PathVariable("eventName") String eventName, @P
279279
Model model, HttpServletRequest request, Locale locale, RedirectAttributes redirectAttributes) {
280280

281281
Optional<Event> eventOptional = eventRepository.findOptionalByShortName(eventName);
282-
Optional<String> redirectForFailure = checkReservation(paymentForm, eventName, reservationId, request, eventOptional);
282+
Optional<String> redirectForFailure = checkReservation(paymentForm.isBackFromOverview(), paymentForm.shouldCancelReservation(), eventName, reservationId, request, eventOptional);
283283
if(redirectForFailure.isPresent()) { //ugly
284284
return redirectForFailure.get();
285285
}
@@ -509,7 +509,7 @@ public String handleReservation(@PathVariable("eventName") String eventName,
509509
Model model, HttpServletRequest request, Locale locale, RedirectAttributes redirectAttributes) {
510510

511511
Optional<Event> eventOptional = eventRepository.findOptionalByShortName(eventName);
512-
Optional<String> redirectForFailure = checkReservation(paymentForm, eventName, reservationId, request, eventOptional);
512+
Optional<String> redirectForFailure = checkReservation(paymentForm.isBackFromOverview(), paymentForm.shouldCancelReservation(), eventName, reservationId, request, eventOptional);
513513
if(redirectForFailure.isPresent()) { //ugly
514514
return redirectForFailure.get();
515515
}
@@ -697,18 +697,24 @@ private boolean isExpressCheckoutEnabled(Event event, OrderSummary orderSummary)
697697
return orderSummary.getTicketAmount() == 1 && ticketFieldRepository.countRequiredAdditionalFieldsForEvent(event.getId()) == 0;
698698
}
699699

700-
private Optional<String> checkReservation(PaymentForm paymentForm, String eventName, String reservationId, HttpServletRequest request, Optional<Event> eventOptional) {
700+
private Optional<String> checkReservation(boolean backFromOverview, boolean cancelReservation, String eventName, String reservationId, HttpServletRequest request, Optional<Event> eventOptional) {
701701

702702
if (!eventOptional.isPresent()) {
703703
return Optional.of("redirect:/");
704704
}
705705

706706
Optional<TicketReservation> ticketReservation = ticketReservationManager.findById(reservationId);
707-
if (!ticketReservation.isPresent()) {
707+
if (!ticketReservation.isPresent() || ticketReservation.get().getStatus() != TicketReservationStatus.PENDING) {
708708
return Optional.of(redirectReservation(ticketReservation, eventName, reservationId));
709709
}
710-
if (paymentForm.shouldCancelReservation()) {
711-
ticketReservationManager.cancelPendingReservation(reservationId, false);
710+
711+
if(backFromOverview) {
712+
ticketReservationRepository.updateValidationStatus(reservationId, false);
713+
return Optional.of("redirect:/event/" + eventName + "/reservation/" + reservationId);
714+
}
715+
716+
if (cancelReservation) {
717+
ticketReservationManager.cancelPendingReservation(reservationId, false); //FIXME
712718
SessionUtil.removeSpecialPriceData(request);
713719
return Optional.of("redirect:/event/" + eventName + "/");
714720
}

src/test/java/alfio/controller/ReservationFlowIntegrationTest.java

+3
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,9 @@ private String payOffline(String eventName, String reservationIdentifier) {
511511
Model model = new BindingAwareModelMap();
512512
MockHttpServletRequest request = new MockHttpServletRequest();
513513
RedirectAttributes redirectAttributes = new RedirectAttributesModelMap();
514+
515+
reservationController.validateToOverview(eventName, reservationIdentifier, paymentForm, bindingResult, model, request, Locale.ENGLISH, redirectAttributes);
516+
514517
return reservationController.handleReservation(eventName, reservationIdentifier, paymentForm, bindingResult, model, request, Locale.ENGLISH, redirectAttributes);
515518
}
516519

0 commit comments

Comments
 (0)