Beispiel #1
0
        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);
        }
Beispiel #2
0
 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);
        }
Beispiel #4
0
        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);
        }