cancelOrder method
void
cancelOrder(
- String orderId
)
Implementation
void cancelOrder(String orderId) {
final order = orderRepository.findById(orderId);
// 1️⃣ Validate
order.canBeCancelled();
// 2️⃣ Side-effects
for (final item in order.items) {
inventoryPort.release(
productId: item.productId,
quantity: item.quantity,
orderId: orderId,
);
}
if (order.loyaltyApplied) {
loyaltyPort.revertPoints(customerId: order.customerId, orderId: orderId);
}
// 3️⃣ Mutate
order.cancel();
// 4️⃣ Persist
orderRepository.update(order);
}