public void Handle(AddOrderLine message) { var order = _session.Get <Order>(message.Id); order.AddLine(message.OrderLine); _session.Commit(); }
internal void AddOrderLine(AddOrderLine cmd) { if (State != OrderState.Pending) { throw new InvalidOrderStateException(cmd.AggregateId, $"State should be {OrderState.Pending} but is {State}"); } RaiseEvent(new OrderLineAdded(cmd.AggregateId, cmd.OrderLine)); }
public void When_AddOrderLineNotPending_ThowsInvalidOrderStateException() { Given(InitialEvents.ToArray(), new OrderCancelled(id)); var command = new AddOrderLine(id, OrderLines[0]); command.Metadata.CausationId = command.Metadata.CommandId; command.Metadata.CorrelationId = causationAndCorrelationId; WhenThrows <AddOrderLine, InvalidOrderStateException>(command); }
public async Task <IActionResult> Post([FromRoute] Guid orderId, [FromBody] OrderLineWrite value) { var orderIdKey = OrderId.With(orderId); var orderLineId = OrderLineId.NewComb(); var orderLine = new OrderLine(orderLineId, ProductId.NewComb(), value.Title, value.Price, value.Amount); var cmd = new AddOrderLine(orderIdKey, orderLine); await this._commandBus.PublishAsync(cmd, new CancellationToken()).ConfigureAwait(false); return(CreatedAtAction("Get", new { orderId = orderIdKey.Value, id = orderLineId.Value }, null)); }
public void When_AddOrderLine_OrderLineAdded() { Given(InitialEvents.ToArray()); var command = new AddOrderLine(id, OrderLines[0]); command.Metadata.CausationId = command.Metadata.CommandId; command.Metadata.CorrelationId = causationAndCorrelationId; When(command); var expectedEvent = new OrderLineAdded(id, OrderLines[0]); expectedEvent.Metadata.CausationId = command.Metadata.CommandId; expectedEvent.Metadata.CorrelationId = causationAndCorrelationId; expectedEvent.Metadata.ProcessId = command.Metadata.ProcessId; Then(expectedEvent); }
public void Handle(AddOrderLine command) { if (!IsOrderExist(command.OrderId)) { return; } OrderLineDto[] lines = new[] { new OrderLineDto { ProductNumber = command.ProductNumber, Quantity = command.Quantity } }; var order = repository.Load <OrderAggregate>(command.OrderId); var aggEvents = AddOrderLines(order, lines); 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 AddLine([FromBody] AddOrderLine addOrderLine) { commandBus.Send(addOrderLine); }