private async void Handle(OrderCreated e) { Console.WriteLine($"Order #{e.OrderNumber} created."); using (var dbContext = new StoreDBContext()) { dbContext.Orders.Add(new Order { OrderNumber = e.OrderNumber, Shipped = false }); await dbContext.SaveChangesAsync(); } }
private async void Handle(OrderCancelled e) { Console.WriteLine($"Order #{e.OrderNumber} cancelled."); using (var dbContext = new StoreDBContext()) { var order = dbContext.Orders.FirstOrDefault(o => o.OrderNumber == e.OrderNumber); if (order != null) { dbContext.Orders.Remove(order); await dbContext.SaveChangesAsync(); } } }
private async void Handle(OrderCompleted e) { Console.WriteLine($"Order #{e.OrderNumber} completed."); using (var dbContext = new StoreDBContext()) { var order = dbContext.Orders.FirstOrDefault(o => o.OrderNumber == e.OrderNumber); if (order != null) { order.ShippingAddress = e.ShippingAddress; await dbContext.SaveChangesAsync(); } } }
private async void Handle(OrderShipped e) { Console.WriteLine($"Order #{e.OrderNumber} shipped."); using (var dbContext = new StoreDBContext()) { var order = dbContext.Orders.FirstOrDefault(o => o.OrderNumber == e.OrderNumber); if (order != null) { // here shipping should be handled // e.g. a shipping manifest for the shipping provider is printed order.Shipped = true; await dbContext.SaveChangesAsync(); } } }
private async void UpdateLastSequenceNumber(ulong sequenceNumber) { using (var dbContext = new StoreDBContext()) { var info = dbContext.ShippingInfo.FirstOrDefault(); if (info == null) { dbContext.ShippingInfo.Add(new ShippingInfo { Id = 0, LastSeqNr = sequenceNumber }); } else { info.LastSeqNr = sequenceNumber; } await dbContext.SaveChangesAsync(); } }
private async void Handle(ProductOrdered e) { Console.WriteLine($"Product #{e.ProductNumber} added to order #{e.OrderNumber}."); using (var dbContext = new StoreDBContext()) { var order = dbContext.Orders.FirstOrDefault(o => o.OrderNumber == e.OrderNumber); if (order != null) { order.Products.Add(new OrderedProduct { Id = Guid.NewGuid().ToString("N"), ProductNumber = e.ProductNumber }); await dbContext.SaveChangesAsync(); } } }
private async void Handle(ProductRemoved e) { Console.WriteLine($"Product #{e.ProductNumber} removed from order #{e.OrderNumber}."); using (var dbContext = new StoreDBContext()) { var order = dbContext.Orders.FirstOrDefault(o => o.OrderNumber == e.OrderNumber); if (order != null) { dbContext.Entry(order).Collection(o => o.Products).Load(); var product = order.Products.FirstOrDefault(p => p.ProductNumber == e.ProductNumber); if (product != null) { order.Products.Remove(product); await dbContext.SaveChangesAsync(); } } } }