Example #1
0
        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);
        }
Example #7
0
 public void AddLine([FromBody] AddOrderLine addOrderLine)
 {
     commandBus.Send(addOrderLine);
 }