public void Handle(SubtractOrderItemQuantity command) { if (!IsOrderExist(command.OrderId)) { return; } OrderAggregate orderAggregate = repository.Load <OrderAggregate>(command.OrderId); orderAggregate.SubtractItemQuantity(command.ProductNumber, command.Quantity); var aggEvents = new Dictionary <Guid, List <IEvent> >() { { orderAggregate.Id, orderAggregate.PendingEvents.ToList() } }; Func <Dictionary <Guid, List <IEvent> > > transactionFunc = () => aggEvents; Action transactionPostProcessFunc = () => aggEvents.SelectMany(agg => agg.Value).ToList().ForEach(@event => readStorageSyncEventBus.Send(@event)); repository.Transaction(transactionFunc, transactionPostProcessFunc); }
public void SubtractItemQuantity([FromBody] SubtractOrderItemQuantity item) { commandBus.Send(item); }