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);
        }
Esempio n. 2
0
 public void SubtractItemQuantity([FromBody] SubtractOrderItemQuantity item)
 {
     commandBus.Send(item);
 }