Skip to content

Commit

Permalink
Merge d74c2d6 into 97be749
Browse files Browse the repository at this point in the history
  • Loading branch information
syjer committed Jan 3, 2021
2 parents 97be749 + d74c2d6 commit 94d8fbc
Show file tree
Hide file tree
Showing 65 changed files with 669 additions and 395 deletions.
2 changes: 1 addition & 1 deletion src/main/java/alfio/controller/IndexController.java
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,7 @@ private Document getOpenGraphPage(Document eventOpenGraph, String eventShortName

var baseUrl = configurationManager.getForSystem(ConfigurationKeys.BASE_URL).getRequiredValue();

var title = messageSourceManager.getMessageSourceForEvent(event).getMessage("event.get-your-ticket-for", new String[] {event.getDisplayName()}, locale);
var title = messageSourceManager.getMessageSourceFor(event).getMessage("event.get-your-ticket-for", new String[] {event.getDisplayName()}, locale);

var head = eventOpenGraph.getElementsByTagName("head").get(0);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
import alfio.manager.i18n.I18nManager;
import alfio.manager.i18n.MessageSourceManager;
import alfio.manager.support.response.ValidatedResponse;
import alfio.manager.system.ConfigurationLevel;
import alfio.manager.system.ConfigurationManager;
import alfio.model.*;
import alfio.model.modification.TicketReservationModification;
Expand Down Expand Up @@ -102,7 +101,7 @@ public ResponseEntity<List<BasicEventInfo>> listEvents(/* TODO search by: organi
var events = eventManager.getPublishedEvents()
.stream()
.map(e -> {
var messageSource = messageSourceManager.getMessageSourceForEvent(e);
var messageSource = messageSourceManager.getMessageSourceFor(e);
var formattedDates = Formatters.getFormattedDates(e, messageSource, contentLanguages);
return new BasicEventInfo(e.getShortName(), e.getFileBlobId(), e.getDisplayName(), e.getFormat(), e.getLocation(),
e.getTimeZone(), DatesWithTimeZoneOffset.fromEvent(e), e.getSameDay(), formattedDates.beginDate, formattedDates.beginTime,
Expand Down Expand Up @@ -144,7 +143,7 @@ public ResponseEntity<ItemsByCategory> getTicketCategories(@PathVariable("eventN

var configurations = configurationManager.getFor(List.of(DISPLAY_TICKETS_LEFT_INDICATOR, MAX_AMOUNT_OF_TICKETS_BY_RESERVATION, DISPLAY_EXPIRED_CATEGORIES), event.getConfigurationLevel());
var ticketCategoryLevelConfiguration = configurationManager.getAllCategoriesAndValueWith(event, MAX_AMOUNT_OF_TICKETS_BY_RESERVATION);
var messageSource = messageSourceManager.getMessageSourceForEvent(event);
var messageSource = messageSourceManager.getMessageSourceFor(event);
var appliedPromoCode = promoCodeRequestManager.checkCode(event, code);


Expand Down Expand Up @@ -445,7 +444,7 @@ private boolean isCaptchaInvalid(String recaptchaResponse, HttpServletRequest re

private Map<String, String> formatDynamicCodeMessage(Event event, PromoCodeDiscount promoCodeDiscount) {
Validate.isTrue(promoCodeDiscount != null && promoCodeDiscount.getDiscountType() != PromoCodeDiscount.DiscountType.NONE);
var messageSource = messageSourceManager.getMessageSourceForEvent(event);
var messageSource = messageSourceManager.getMessageSourceFor(event);
Map<String, String> res = new HashMap<>();
String code;
String amount;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@
import alfio.manager.payment.StripeCreditCardManager;
import alfio.manager.support.PaymentResult;
import alfio.manager.support.response.ValidatedResponse;
import alfio.manager.system.ConfigurationLevel;
import alfio.manager.system.ConfigurationManager;
import alfio.manager.system.ReservationPriceCalculator;
import alfio.model.*;
Expand Down Expand Up @@ -304,7 +303,7 @@ public ResponseEntity<ValidatedResponse<ReservationPaymentResult>> confirmOvervi
if (!status.isSuccessful()) {
String errorMessageCode = status.getErrorCode().orElse(StripeCreditCardManager.STRIPE_UNEXPECTED);
MessageSourceResolvable message = new DefaultMessageSourceResolvable(new String[]{errorMessageCode, StripeCreditCardManager.STRIPE_UNEXPECTED});
bindingResult.reject(ErrorsCode.STEP_2_PAYMENT_PROCESSING_ERROR, new Object[]{messageSourceManager.getMessageSourceForEvent(event).getMessage(message, locale)}, null);
bindingResult.reject(ErrorsCode.STEP_2_PAYMENT_PROCESSING_ERROR, new Object[]{messageSourceManager.getMessageSourceFor(event).getMessage(message, locale)}, null);
return buildReservationPaymentStatus(bindingResult);
}

Expand Down Expand Up @@ -626,7 +625,7 @@ public ResponseEntity<ReservationPaymentResult> getTransactionStatus(@PathVariab

private Map<String, String> formatDateForLocales(Event event, ZonedDateTime date, String formattingCode) {

var messageSource = messageSourceManager.getMessageSourceForEvent(event);
var messageSource = messageSourceManager.getMessageSourceFor(event);

Map<String, String> res = new HashMap<>();
for (ContentLanguage cl : event.getContentLanguages()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ public ResponseEntity<TicketInfo> getTicketInfo(@PathVariable("eventName") Strin
var sameDay = validityStart.truncatedTo(ChronoUnit.DAYS).equals(validityEnd.truncatedTo(ChronoUnit.DAYS));


var messageSource = messageSourceManager.getMessageSourceForEvent(event);
var messageSource = messageSourceManager.getMessageSourceFor(event);
var formattedDates = Formatters.getFormattedDates(event, messageSource, event.getContentLanguages());
//

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ public ReservationInfo.BookingInfoTicket toBookingInfoTicket(Ticket ticket, Even
.map(link -> link.getValidFrom().atZone(event.getZoneId()))
.orElse(event.getBegin());
formattedDates = Formatters.getFormattedDate(event, checkInDate, "common.ticket-category.date-format",
messageSourceManager.getMessageSourceForEvent(event));
messageSourceManager.getMessageSourceFor(event));
onlineEventStarted = event.now(clockProvider).isAfter(checkInDate);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public Optional<EventWithAdditionalInfo> loadEventInfo(String eventName, HttpSes
return eventRepository.findOptionalByShortName(eventName).filter(e -> e.getStatus() != Event.Status.DISABLED)//
.map(event -> {
//
var messageSourceAndOverride = messageSourceManager.getMessageSourceForEventAndOverride(event);
var messageSourceAndOverride = messageSourceManager.getMessageSourceForPurchasableAndOverride(event);
var messageSource = messageSourceAndOverride.getLeft();
var i18nOverride = messageSourceAndOverride.getRight();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@
*/
package alfio.controller.payment;

import alfio.manager.PurchasableManager;
import alfio.manager.TicketReservationManager;
import alfio.manager.payment.PayPalManager;
import alfio.model.Event;
import alfio.model.Purchasable;
import alfio.model.TicketReservation;
import alfio.model.transaction.token.PayPalToken;
import alfio.repository.EventRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
Expand All @@ -34,61 +34,67 @@
import static org.apache.commons.lang3.StringUtils.isNotBlank;

@Controller
@RequestMapping("/event/{eventName}/reservation/{reservationId}/payment/paypal")
@RequestMapping("/{purchasableType}/{purchasableIdentifier}/reservation/{reservationId}/payment/paypal")
@RequiredArgsConstructor
public class PayPalCallbackController {

private final EventRepository eventRepository;
private final PurchasableManager purchasableManager;
private final TicketReservationManager ticketReservationManager;
private final PayPalManager payPalManager;

@GetMapping("/confirm")
public String payPalSuccess(@PathVariable("eventName") String eventName,
public String payPalSuccess(@PathVariable("purchasableType") String purchasableType,
@PathVariable("purchasableIdentifier") String purchasableIdentifier,
@PathVariable("reservationId") String reservationId,
@RequestParam(value = "token", required = false) String payPalPaymentId,
@RequestParam(value = "PayerID", required = false) String payPalPayerID,
@RequestParam(value = "hmac") String hmac) {

Optional<Event> optionalEvent = eventRepository.findOptionalByShortName(eventName);
if(optionalEvent.isEmpty()) {
var optionalPurchasable = purchasableManager.findBy(Purchasable.PurchasableType.from(purchasableType), purchasableIdentifier);
if(optionalPurchasable.isEmpty()) {
return "redirect:/";
}

Optional<TicketReservation> optionalReservation = ticketReservationManager.findById(reservationId);

var purchasable = optionalPurchasable.get();

if(optionalReservation.isEmpty()) {
return "redirect:/event/" + eventName;
return "redirect:/"+purchasable.getType().getUrlComponent()+"/" + purchasable.getPublicIdentifier();
}

var res = optionalReservation.get();
var ev = optionalEvent.get();


if (isNotBlank(payPalPayerID) && isNotBlank(payPalPaymentId)) {
var token = new PayPalToken(payPalPayerID, payPalPaymentId, hmac);
payPalManager.saveToken(res.getId(), ev, token);
return "redirect:/event/" + ev.getShortName() + "/reservation/" +res.getId() + "/overview";
payPalManager.saveToken(res.getId(), purchasable, token);
return "redirect:/"+purchasable.getType().getUrlComponent()+"/" + purchasable.getPublicIdentifier() + "/reservation/" +res.getId() + "/overview";
} else {
return payPalCancel(ev.getShortName(), res.getId(), payPalPaymentId, hmac);
return payPalCancel(purchasable.getType().getUrlComponent(), purchasable.getPublicIdentifier(), res.getId(), payPalPaymentId, hmac);
}
}

@GetMapping("/cancel")
public String payPalCancel(@PathVariable("eventName") String eventName,
public String payPalCancel(@PathVariable("purchasableType") String purchasableType,
@PathVariable("purchasableIdentifier") String purchasableIdentifier,
@PathVariable("reservationId") String reservationId,
@RequestParam(value = "token", required = false) String payPalPaymentId,
@RequestParam(value = "hmac") String hmac) {

if(eventRepository.findOptionalByShortName(eventName).isEmpty()) {
var optionalPurchasable = purchasableManager.findBy(Purchasable.PurchasableType.from(purchasableType), purchasableIdentifier);
if(optionalPurchasable.isEmpty()) {
return "redirect:/";
}
var purchasable = optionalPurchasable.get();

Optional<TicketReservation> optionalReservation = ticketReservationManager.findById(reservationId);

if(optionalReservation.isEmpty()) {
return "redirect:/event/" + eventName;
return "redirect:/" + purchasable.getType().getUrlComponent() + "/" + purchasable.getPublicIdentifier();
}

payPalManager.removeToken(optionalReservation.get(), payPalPaymentId);
return "redirect:/event/"+eventName+"/reservation/"+reservationId+"/overview";
return "redirect:/" + purchasable.getType().getUrlComponent() + "/" + purchasable.getPublicIdentifier() + "/reservation/" + optionalReservation.get().getId() + "/overview";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,10 @@
*/
package alfio.controller.payment;

import alfio.manager.PurchasableManager;
import alfio.manager.TicketReservationManager;
import alfio.manager.payment.saferpay.PaymentPageInitializeRequestBuilder;
import alfio.repository.EventRepository;
import alfio.model.Purchasable;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
Expand All @@ -30,26 +31,27 @@
public class SaferpayCallbackController {

private final TicketReservationManager ticketReservationManager;
private final EventRepository eventRepository;
private final PurchasableManager purchasableManager;

@GetMapping(PaymentPageInitializeRequestBuilder.CANCEL_URL_TEMPLATE)
public String saferpayCancel(@PathVariable("eventName") String eventName,
public String saferpayCancel(@PathVariable("purchasableType") String purchasableType,
@PathVariable("purchasableIdentifier") String purchasableIdentifier,
@PathVariable("reservationId") String reservationId) {
var optionalEvent = eventRepository.findOptionalByShortName(eventName);
if(optionalEvent.isEmpty()) {
var maybePurchasable = purchasableManager.findBy(Purchasable.PurchasableType.from(purchasableType), purchasableIdentifier);
if(maybePurchasable.isEmpty()) {
return "redirect:/";
}
var event = optionalEvent.get();
var optionalReservation = ticketReservationManager.findByIdForEvent(reservationId, event.getId());
var purchasable = maybePurchasable.get();
var optionalReservation = ticketReservationManager.findById(reservationId);
if(optionalReservation.isEmpty()) {
return "redirect:/event/"+eventName;
return "redirect:/"+purchasable.getType().getUrlComponent()+"/"+purchasable.getPublicIdentifier();
}
var optionalResult = ticketReservationManager.forceTransactionCheck(event, optionalReservation.get());
var optionalResult = ticketReservationManager.forceTransactionCheck(purchasable, optionalReservation.get());
if(optionalResult.isEmpty()) {
// there's no transaction available.
return "redirect:/event/"+eventName;
return "redirect:/"+purchasable.getType().getUrlComponent()+"/"+purchasable.getPublicIdentifier();
}
return "redirect:" + UriComponentsBuilder.fromPath(PaymentPageInitializeRequestBuilder.SUCCESS_URL_TEMPLATE)
.buildAndExpand(eventName, reservationId).toUriString();
.buildAndExpand(purchasable.getType().getUrlComponent(), purchasable.getPublicIdentifier(), reservationId).toUriString();
}
}
Loading

0 comments on commit 94d8fbc

Please sign in to comment.