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); } } }