Order events
Describes order events methods so you can build functionality to take action during order processing in Optimizely Commerce Connect.
IOrderEvents
IOrderEvents is available in the EPiServer.Commerce.Order namespace and handles events for orders processed by IOrderRepository.
IOrderEvents contains the order events SavingOrder, SavedOrder, DeletingOrder, and DeletedOrder. These events are triggered when an order is created, updated, or deleted. See Order manipulation.
public class OrderEventListener {
private readonly IOrderRepository _orderRepository;
private readonly IOrderEvents _orderEvents;
private readonly ILogger _logger = LogManager.GetLogger(typeof (OrderEventListener));
public OrderEventListener(IOrderRepository orderRepository, IOrderEvents orderEvents) {
_orderRepository = orderRepository;
_orderEvents = orderEvents;
}
public void AddEvents() {
_orderEvents.SavedOrder += OrderEventsOnSavedOrder;
_orderEvents.DeletingOrder += OrderEventsOnDeletingOrder;
}
private void OrderEventsOnSavedOrder(object sender, OrderEventArgs orderEventArgs) {
var po = orderEventArgs.OrderGroup as IPurchaseOrder;
if (po != null) {
_logger.Information($"Order {po.OrderNumber} was saved");
}
}
private void OrderEventsOnDeletingOrder(object sender, OrderEventArgs orderEventArgs) {
var po = _orderRepository.Load<IPurchaseOrder>(orderEventArgs.OrderLink.OrderGroupId);
_logger.Information($"Order {po.OrderNumber} is being deleted.");
}
public void RemoveEvents() {
_orderEvents.DeletingOrder -= OrderEventsOnDeletingOrder;
_orderEvents.SavedOrder -= OrderEventsOnSavedOrder;
}
}OrderContext events (legacy)
OrderContext provides two events for integration scenarios. Because these events are synchronous, keep the event handlers fast or run the work asynchronously so the event can return while the action continues.
[ModuleDependency(typeof (EPiServer.Commerce.Initialization.InitializationModule))]
public class OrderEventInitialization: IConfigurableModule {
public void Initialize(InitializationEngine context) {
OrderContext.Current.OrderGroupUpdated += Current_OrderGroupUpdated;
OrderContext.Current.OrderGroupDeleted += Current_OrderGroupUpdated;
}
private void Current_OrderGroupUpdated(object sender, OrderGroupEventArgs e) {
Task.Run(() => DoSomething(sender as OrderGroup, e));
}
private void DoSomething(OrderGroup order, OrderGroupEventArgs e) {}
}Updated 22 days ago
