Пример #1
0
        public void Handle(OrderRejectedMessage message)
        {
            Process(message, m =>
            {
                OrderRejected = true;

                Cancel();
            });
        }
        private void HandleOrderRejected(OrderRejectedMessage message)
        {
            using (var scope = provider.CreateScope())
            {
                var services   = scope.ServiceProvider;
                var orderRepos = services.GetService <IRepository <Order> >();

                // Delete tentative order.
                orderRepos.Remove(message.OrderId);
            }
        }
        private void HandleOrderCreated(OrderCreatedMessage message)
        {
            // A service scope is created to get an instance of the product repository.
            // When the service scope is disposed, the product repository instance will
            // also be disposed.
            using (var scope = provider.CreateScope())
            {
                var services     = scope.ServiceProvider;
                var productRepos = services.GetService <IRepository <Product> >();

                if (ProductItemsAvailable(message.OrderLines, productRepos))
                {
                    // Reserve items and publish an OrderAcceptedMessage
                    foreach (var orderLine in message.OrderLines)
                    {
                        var product = productRepos.Get(orderLine.ProductId);
                        product.ItemsReserved += orderLine.Quantity;
                        productRepos.Edit(product);
                    }

                    var replyMessage = new OrderAcceptedMessage
                    {
                        OrderId = message.OrderId
                    };

                    bus.PubSub.Publish(replyMessage);
                }
                else
                {
                    // Publish an OrderRejectedMessage
                    var replyMessage = new OrderRejectedMessage
                    {
                        OrderId = message.OrderId
                    };

                    bus.PubSub.Publish(replyMessage);
                }
            }
        }