Skip to content
This repository was archived by the owner on Jul 6, 2025. It is now read-only.

Commit 734de50

Browse files
committed
add canCaptureOrder method to OrderApplicationService and OrderDomainService
1 parent 29f7b6f commit 734de50

3 files changed

Lines changed: 13 additions & 0 deletions

File tree

src/main/java/com/zenfulcode/commercify/order/application/service/OrderApplicationService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,4 +128,8 @@ public BigDecimal calculateTotalRevenue(CalculateTotalRevenueQuery query) {
128128
public int countOrdersInPeriod(CountOrdersInPeriodQuery query) {
129129
return orderDomainService.countOrdersInPeriod(query.startDate(), query.endDate());
130130
}
131+
132+
public void canCaptureOrder(OrderId orderId) {
133+
orderDomainService.canCaptureOrder(orderId);
134+
}
131135
}

src/main/java/com/zenfulcode/commercify/order/domain/service/OrderDomainService.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,4 +155,9 @@ public int countOrdersInPeriod(LocalDate startDate, LocalDate endDate) {
155155

156156
return orderRepository.countOrders(start, end);
157157
}
158+
159+
public void canCaptureOrder(OrderId orderId) {
160+
Order order = getOrderById(orderId);
161+
validationService.validateStatusTransition(order, OrderStatus.COMPLETED);
162+
}
158163
}

src/main/java/com/zenfulcode/commercify/payment/application/service/PaymentApplicationService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.zenfulcode.commercify.payment.application.service;
22

3+
import com.zenfulcode.commercify.order.application.service.OrderApplicationService;
34
import com.zenfulcode.commercify.payment.application.command.CapturePaymentCommand;
45
import com.zenfulcode.commercify.payment.application.command.InitiatePaymentCommand;
56
import com.zenfulcode.commercify.payment.application.dto.CaptureAmount;
@@ -31,6 +32,7 @@ public class PaymentApplicationService {
3132
private final PaymentProviderFactory providerFactory;
3233
private final DefaultDomainEventPublisher eventPublisher;
3334
private final WebhookHandler webhookHandler;
35+
private final OrderApplicationService orderApplicationService;
3436

3537
@Transactional
3638
public InitializedPayment initiatePayment(InitiatePaymentCommand command) {
@@ -79,6 +81,8 @@ public void handlePaymentCallback(PaymentProvider provider, WebhookPayload paylo
7981
// TODO: Make sure the capture currency is the same as the payment currency
8082
@Transactional
8183
public CapturedPayment capturePayment(CapturePaymentCommand command) {
84+
orderApplicationService.canCaptureOrder(command.orderId());
85+
8286
Payment payment = paymentDomainService.getPaymentByOrderId(command.orderId());
8387

8488
Money captureAmount = command.captureAmount() == null ? payment.getAmount() : command.captureAmount();

0 commit comments

Comments
 (0)