public async Task Consume(ReceiveContext <AddOrderItem> messageContext) { Guard.NotNull(messageContext, nameof(messageContext)); var message = messageContext.Message; var order = await this.repository.Get(message.OrderId); var getProduct = new GetProduct(message.OrderItem.ProductId); var product = await this.bus.Request <GetProduct, Product>(getProduct); var orderItem = new OrderItem(message.OrderItem.LineNumber, product.Id, product.Price, message.OrderItem.Quantity); order.AddItem(orderItem); await this.repository.Save(order); }
public OrderItemAdded( Guid orderId, int customerId, Money orderTotal, OrderItem orderItem, Read.OrderStatusEnum orderStatus, OrderStatusEnum itemOrderStatus) { Guard.NotNull(orderItem, nameof(orderItem)); this.OrderId = orderId; this.CustomerId = customerId; this.OrderTotal = orderTotal; this.OrderItem = orderItem; this.OrderStatus = orderStatus; this.Topic = itemOrderStatus.ToString(); }
public async Task Consume(ReceiveContext <CreateOrder> messageContext) { Guard.NotNull(messageContext, nameof(messageContext)); var items = new List <OrderItem>(); foreach (var messageItem in messageContext.Message.Items) { var getProduct = new GetProduct(messageItem.ProductId); var product = await this.messageBus.Request <GetProduct, Product>(getProduct); var orderItem = new OrderItem(messageItem.LineNumber, product.Id, product.Price, messageItem.Quantity); items.Add(orderItem); } var order = Order.CreateOrder(messageContext.Message.CustomerId, items); await this.repository.Save(order); }
public void AddItem(OrderItem item) { Guard.NotNull(item, nameof(item)); bool wasSuspended = this.isSuspended; this.orderTotal = SumAmount(this.orderTotal, new[] { item }); this.CheckStatus(); var orderStatus = OrderStatusEnum.OrderSuspended; var itemOrderStatus = OrderItemAdded.OrderStatusEnum.OrderSuspended; if (!this.isSuspended) { orderStatus = OrderStatusEnum.OrderAccepted; itemOrderStatus = wasSuspended ? OrderItemAdded.OrderStatusEnum.OrderUnsuspended : OrderItemAdded.OrderStatusEnum.OrderAccepted; } var orderItemAdded = new OrderItemAdded(this.Id, this.customerId, this.orderTotal, item, orderStatus, itemOrderStatus); this.RaiseEvent(orderItemAdded); }