Skip to content

Commit

Permalink
when validating the payment provider for an event, don't filter out u…
Browse files Browse the repository at this point in the history
…nconfigured ones (#1101)

* when validating the payment provider for an event, don't filter out unconfigured ones, see error 1 in #1100

* refactor: reduce method visibility #1100
  • Loading branch information
syjer authored Aug 13, 2022
1 parent 6b1c40e commit 30850a6
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions src/main/java/alfio/manager/PaymentManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ List<Map.Entry<PaymentMethod, Set<PaymentProxy>>> validateSelection(List<Payment
var paymentContext = new PaymentContext(null, ConfigurationLevel.organization(organizationId));

Map<PaymentMethod, Set<PaymentProxy>> proxiesByMethod = paymentProxies.stream()
.flatMap(proxy -> streamActiveProvidersByProxy(proxy, paymentContext))
.flatMap(proxy -> streamProvidersByProxyAndCapabilities(proxy, List.of()))
.map(provider -> Pair.of(provider.getPaymentProxy(), provider.getSupportedPaymentMethods(paymentContext, TransactionRequest.empty())))
.flatMap(pair -> pair.getValue().stream().map(pm -> Pair.of(pm, pair.getKey()))) // flip
.collect(Collectors.groupingBy(Pair::getKey, Collectors.mapping(Pair::getValue, Collectors.toSet())));
Expand All @@ -95,12 +95,17 @@ List<Map.Entry<PaymentMethod, Set<PaymentProxy>>> validateSelection(List<Payment
.collect(Collectors.toList());
}

private Stream<PaymentProvider> streamProvidersByProxyAndCapabilities(PaymentProxy paymentProxy,
List<Class<? extends Capability>> capabilities) {
return paymentProviders.stream()
.filter(pp -> pp.getPaymentProxy() == paymentProxy)
.filter(filterByCapabilities(capabilities));
}

Stream<PaymentProvider> streamActiveProvidersByProxyAndCapabilities(PaymentProxy paymentProxy,
PaymentContext paymentContext,
List<Class<? extends Capability>> capabilities) {
return paymentProviders.stream()
.filter(pp -> pp.getPaymentProxy() == paymentProxy && pp.isActive(paymentContext))
.filter(filterByCapabilities(capabilities));
return streamProvidersByProxyAndCapabilities(paymentProxy, capabilities).filter((pp) -> pp.isActive(paymentContext));
}

private static Predicate<PaymentProvider> filterByCapabilities(List<Class<? extends Capability>> capabilities) {
Expand Down

0 comments on commit 30850a6

Please sign in to comment.