Exemple #1
0
        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();
            }
        }
Exemple #2
0
 private ulong?GetLastSequenceNumber()
 {
     using (var dbContext = new StoreDBContext())
     {
         var info = dbContext.ShippingInfo.FirstOrDefault();
         if (info == null)
         {
             return(null);
         }
         return(info.LastSeqNr);
     }
 }
Exemple #3
0
        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();
                }
            }
        }
Exemple #4
0
        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();
                }
            }
        }
Exemple #5
0
        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();
                }
            }
        }
Exemple #6
0
 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();
     }
 }
Exemple #7
0
        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();
                }
            }
        }
Exemple #8
0
        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();
                    }
                }
            }
        }