Skip to content

Commit

Permalink
remove use of RequestContextUtils.getLocale #657
Browse files Browse the repository at this point in the history
  • Loading branch information
syjer committed Jun 19, 2019
1 parent 505a7da commit ea8fbe4
Show file tree
Hide file tree
Showing 8 changed files with 53 additions and 59 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -512,11 +512,11 @@ public Integer getPendingPaymentsCount(@PathVariable("eventName") String eventNa
}

@RequestMapping(value = "/events/{eventName}/pending-payments/{reservationId}/confirm", method = POST)
public String confirmPayment(@PathVariable("eventName") String eventName, @PathVariable("reservationId") String reservationId, Principal principal, HttpServletRequest request) {
public String confirmPayment(@PathVariable("eventName") String eventName, @PathVariable("reservationId") String reservationId, @RequestParam(required = false, name = "lang") String lang, Principal principal) {
ticketReservationManager.confirmOfflinePayment(loadEvent(eventName, principal), reservationId, principal.getName());
ticketReservationManager.findById(reservationId)
.filter(TicketReservation::isDirectAssignmentRequested)
.ifPresent(reservation -> ticketHelper.directTicketAssignment(eventName, reservationId, reservation.getEmail(), reservation.getFullName(), reservation.getFirstName(), reservation.getLastName(), reservation.getUserLanguage(), Optional.empty(), request));
.ifPresent(reservation -> ticketHelper.directTicketAssignment(eventName, reservationId, reservation.getEmail(), reservation.getFullName(), reservation.getFirstName(), reservation.getLastName(), reservation.getUserLanguage(), Optional.empty(), Locale.forLanguageTag(lang)));
return OK;
}

Expand Down
28 changes: 13 additions & 15 deletions src/main/java/alfio/controller/api/support/TicketHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,7 @@
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.web.servlet.support.RequestContextUtils;

import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
Expand Down Expand Up @@ -80,18 +78,18 @@ public Optional<Triple<ValidationResult, Event, Ticket>> assignTicket(String eve
String ticketIdentifier,
UpdateTicketOwnerForm updateTicketOwner,
Optional<Errors> bindingResult,
HttpServletRequest request,
Locale locale,
Optional<UserDetails> userDetails,
boolean addPrefix) {

Optional<Triple<ValidationResult, Event, Ticket>> triple = ticketReservationManager.fetchComplete(eventName, ticketIdentifier)
.map(result -> assignTicket(updateTicketOwner, bindingResult, request, userDetails, result, addPrefix ? "tickets["+ticketIdentifier+"]" : ""));
.map(result -> assignTicket(updateTicketOwner, bindingResult, locale, userDetails, result, addPrefix ? "tickets["+ticketIdentifier+"]" : ""));
return triple;
}

private Triple<ValidationResult, Event, Ticket> assignTicket(UpdateTicketOwnerForm updateTicketOwner,
Optional<Errors> bindingResult,
HttpServletRequest request,
Locale locale,
Optional<UserDetails> userDetails,
Triple<Event, TicketReservation, Ticket> result,
String formPrefix) {
Expand Down Expand Up @@ -119,7 +117,7 @@ private Triple<ValidationResult, Event, Ticket> assignTicket(UpdateTicketOwnerFo
Validator.AdvancedValidationContext context = new Validator.AdvancedValidationContext(updateTicketOwner, fieldConf, t.getCategoryId(), t.getUuid(), formPrefix);
ValidationResult validationResult = Validator.validateTicketAssignment(updateTicketOwner, ticketFieldFilterer.getFieldsForTicket(t.getUuid()), bindingResult, event, formPrefix, sameCountryValidator)
.or(Validator.performAdvancedValidation(advancedValidator, context, bindingResult.orElse(null)))
.ifSuccess(() -> updateTicketOwner(updateTicketOwner, request, t, event, ticketReservation, userDetails));
.ifSuccess(() -> updateTicketOwner(updateTicketOwner, locale, t, event, ticketReservation, userDetails));
return Triple.of(validationResult, event, ticketRepository.findByUUID(t.getUuid()));
}

Expand All @@ -131,21 +129,21 @@ public Optional<Triple<ValidationResult, Event, Ticket>> preAssignTicket(String
String ticketIdentifier,
UpdateTicketOwnerForm updateTicketOwner,
Optional<Errors> bindingResult,
HttpServletRequest request,
Locale locale,
Optional<UserDetails> userDetails) {

Optional<Triple<ValidationResult, Event, Ticket>> triple = ticketReservationManager.from(eventName, reservationId, ticketIdentifier)
.filter(temp -> PENDING_RESERVATION_STATUSES.contains(temp.getMiddle().getStatus()) && temp.getRight().getStatus() == Ticket.TicketStatus.PENDING)
.map(result -> assignTicket(updateTicketOwner, bindingResult, request, userDetails, result, "tickets["+ticketIdentifier+"]"));
.map(result -> assignTicket(updateTicketOwner, bindingResult, locale, userDetails, result, "tickets["+ticketIdentifier+"]"));
return triple;
}

public Optional<Triple<ValidationResult, Event, Ticket>> assignTicket(String eventName,
String ticketIdentifier,
UpdateTicketOwnerForm updateTicketOwner,
Optional<Errors> bindingResult,
HttpServletRequest request) {
return assignTicket(eventName, ticketIdentifier, updateTicketOwner, bindingResult, request, Optional.empty(), false);
Locale locale) {
return assignTicket(eventName, ticketIdentifier, updateTicketOwner, bindingResult, locale, Optional.empty(), false);
}

public Optional<Triple<ValidationResult, Event, Ticket>> directTicketAssignment(String eventName,
Expand All @@ -156,7 +154,7 @@ public Optional<Triple<ValidationResult, Event, Ticket>> directTicketAssignment(
String lastName,
String userLanguage,
Optional<Errors> bindingResult,
HttpServletRequest request) {
Locale locale) {
List<Ticket> tickets = ticketReservationManager.findTicketsInReservation(reservationId);
if(tickets.size() > 1) {
return Optional.empty();
Expand All @@ -169,7 +167,7 @@ public Optional<Triple<ValidationResult, Event, Ticket>> directTicketAssignment(
form.setFirstName(firstName);
form.setLastName(lastName);
form.setUserLanguage(userLanguage);
return assignTicket(eventName, ticketUuid, form, bindingResult, request);
return assignTicket(eventName, ticketUuid, form, bindingResult, locale);
}

public static List<Pair<String, String>> getLocalizedCountries(Locale locale) {
Expand Down Expand Up @@ -202,13 +200,13 @@ private static List<Pair<String, String>> mapISOCountries(Stream<String> isoCoun
.collect(Collectors.toList());
}

private void updateTicketOwner(UpdateTicketOwnerForm updateTicketOwner, HttpServletRequest request, Ticket t, Event event, TicketReservation ticketReservation, Optional<UserDetails> userDetails) {
private void updateTicketOwner(UpdateTicketOwnerForm updateTicketOwner, Locale locale, Ticket t, Event event, TicketReservation ticketReservation, Optional<UserDetails> userDetails) {
Locale language = Optional.ofNullable(updateTicketOwner.getUserLanguage())
.filter(StringUtils::isNotBlank)
.map(Locale::forLanguageTag)
.orElseGet(() -> RequestContextUtils.getLocale(request));
.orElse(locale);
TicketCategory category = ticketCategoryRepository.getById(t.getCategoryId());
var ticketLanguage = LocaleUtil.getTicketLanguage(t, request);
var ticketLanguage = LocaleUtil.getTicketLanguage(t, locale);
ticketReservationManager.updateTicketOwner(t, language, event, updateTicketOwner,
getConfirmationTextBuilder(ticketLanguage, event, ticketReservation, t, category),
getOwnerChangeTextBuilder(ticketLanguage, t, event),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -410,7 +410,7 @@ public void getCalendar(@PathVariable("eventName") String eventName,

@PostMapping(value = "event/{eventName}/reserve-tickets")
public ResponseEntity<ValidatedResponse<String>> reserveTicket(@PathVariable("eventName") String eventName,
@RequestParam("lang") String lang,
@RequestParam(required = false, name = "lang") String lang,
@RequestBody ReservationForm reservation,
BindingResult bindingResult,
ServletWebRequest request) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@

import static alfio.model.PriceContainer.VatStatus.*;
import static alfio.model.PriceContainer.VatStatus.INCLUDED_EXEMPT;
import static alfio.model.system.Configuration.getSystemConfiguration;
import static alfio.model.system.ConfigurationKeys.*;
import static alfio.util.MonetaryUtil.unitToCents;

Expand Down Expand Up @@ -259,7 +258,7 @@ public ResponseEntity<Boolean> backToBook(@PathVariable("eventName") String even
@PostMapping("/event/{eventName}/reservation/{reservationId}")
public ResponseEntity<ValidatedResponse<ReservationPaymentResult>> handleReservation(@PathVariable("eventName") String eventName,
@PathVariable("reservationId") String reservationId,
@RequestParam("lang") String lang,
@RequestParam(required = false, name = "lang") String lang,
@RequestBody PaymentForm paymentForm,
BindingResult bindingResult,
HttpServletRequest request,
Expand Down Expand Up @@ -343,10 +342,9 @@ private static ResponseEntity<ValidatedResponse<ReservationPaymentResult>> build
@PostMapping("/event/{eventName}/reservation/{reservationId}/validate-to-overview")
public ResponseEntity<ValidatedResponse<Boolean>> validateToOverview(@PathVariable("eventName") String eventName,
@PathVariable("reservationId") String reservationId,
@RequestParam("lang") String lang,
@RequestParam(required = false, name = "lang") String lang,
@RequestBody ContactAndTicketsForm contactAndTicketsForm,
BindingResult bindingResult,
HttpServletRequest request) {
BindingResult bindingResult) {


return getReservationWithPendingStatus(eventName, reservationId).map(er -> {
Expand Down Expand Up @@ -391,7 +389,7 @@ public ResponseEntity<ValidatedResponse<Boolean>> validateToOverview(@PathVariab
);
}

assignTickets(event.getShortName(), reservationId, contactAndTicketsForm, bindingResult, request, true, true);
assignTickets(event.getShortName(), reservationId, contactAndTicketsForm, bindingResult, locale, true, true);
//

Map<ConfigurationKeys, Boolean> formValidationParameters = Collections.singletonMap(ENABLE_ITALY_E_INVOICING, italyEInvoicing);
Expand Down Expand Up @@ -426,14 +424,14 @@ private TicketReservationInvoicingAdditionalInfo.ItalianEInvoicing getItalianInv
return null;
}

private void assignTickets(String eventName, String reservationId, ContactAndTicketsForm contactAndTicketsForm, BindingResult bindingResult, HttpServletRequest request, boolean preAssign, boolean skipValidation) {
private void assignTickets(String eventName, String reservationId, ContactAndTicketsForm contactAndTicketsForm, BindingResult bindingResult, Locale locale, boolean preAssign, boolean skipValidation) {
if(!contactAndTicketsForm.isPostponeAssignment()) {
contactAndTicketsForm.getTickets().forEach((ticketId, owner) -> {
if (preAssign) {
Optional<Errors> bindingResultOptional = skipValidation ? Optional.empty() : Optional.of(bindingResult);
ticketHelper.preAssignTicket(eventName, reservationId, ticketId, owner, bindingResultOptional, request, Optional.empty());
ticketHelper.preAssignTicket(eventName, reservationId, ticketId, owner, bindingResultOptional, locale, Optional.empty());
} else {
ticketHelper.assignTicket(eventName, ticketId, owner, Optional.of(bindingResult), request, Optional.empty(), true);
ticketHelper.assignTicket(eventName, ticketId, owner, Optional.of(bindingResult), locale, Optional.empty(), true);
}
});
}
Expand Down Expand Up @@ -492,7 +490,7 @@ private Optional<Pair<Event, TicketReservation>> getReservationWithPendingStatus
@PostMapping("/event/{eventName}/reservation/{reservationId}/re-send-email")
public ResponseEntity<Boolean> reSendReservationConfirmationEmail(@PathVariable("eventName") String eventName,
@PathVariable("reservationId") String reservationId,
@RequestParam("lang") String lang) {
@RequestParam(required = false, name = "lang") String lang) {



Expand Down
Loading

0 comments on commit ea8fbe4

Please sign in to comment.