示例#1
0
        public async Task Handle(AddItemToCart message, IMessageHandlerContext context)
        {
            using (var db = WarehouseContext.Create())
            {
                var requestAlreadyHandled = await db.ShoppingCartItems
                                            .SingleOrDefaultAsync(o => o.RequestId == message.RequestId) != null;

                if (!requestAlreadyHandled)
                {
                    var stockItem = db.StockItems
                                    .Where(o => o.ProductId == message.ProductId)
                                    .Single();

                    db.ShoppingCartItems.Add(new ShoppingCartItem()
                    {
                        CartId    = message.CartId,
                        RequestId = message.RequestId,
                        ProductId = message.ProductId,
                        Inventory = stockItem.Inventory,
                        Quantity  = message.Quantity
                    });

                    await db.SaveChangesAsync();
                }
            }
        }
示例#2
0
        public dynamic Get(int id)
        {
            using (var db = WarehouseContext.Create())
            {
                var item = db.StockItems
                           .Where(o => o.ProductId == id)
                           .SingleOrDefault();

                return(item);
            }
        }
示例#3
0
        public IEnumerable <dynamic> Get(string ids)
        {
            using (var db = WarehouseContext.Create())
            {
                var productIds = ids.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Select(s => int.Parse(s)).ToArray();
                var items      = db.StockItems
                                 .Where(status => productIds.Any(id => id == status.ProductId))
                                 .ToArray();

                return(items);
            }
        }
        public async Task Handle(CleanupFailedCartRequest message, IMessageHandlerContext context)
        {
            using (var db = WarehouseContext.Create())
            {
                var requestItem = await db.ShoppingCartItems
                                  .Where(o => o.RequestId == message.RequestId)
                                  .SingleOrDefaultAsync();

                if (requestItem != null)
                {
                    db.ShoppingCartItems.Remove(requestItem);
                    await db.SaveChangesAsync();
                }
            }
        }
示例#5
0
        public async Task Handle(ShoppingCartGotInactive message, IMessageHandlerContext context)
        {
            Console.WriteLine($"Ready to wipe cart {message.CartId}.", Color.Yellow);

            using (var db = WarehouseContext.Create())
            {
                var cartItems = await db.ShoppingCartItems
                                .Where(o => o.CartId == message.CartId)
                                .ToListAsync();

                db.ShoppingCartItems.RemoveRange(cartItems);
                await db.SaveChangesAsync();
            }

            Console.WriteLine($"Cart {message.CartId} wiped.", Color.Green);
        }
        public IEnumerable <dynamic> GetCart(string ids)
        {
            using (var db = WarehouseContext.Create())
            {
                var productIds = ids.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Select(s => int.Parse(s)).ToArray();

                var cartItems = db.ShoppingCartItems
                                .Where(item => productIds.Any(id => id == item.ProductId))
                                .ToArray()
                                .GroupBy(cartItem => cartItem.ProductId)
                                .Select(group => new
                {
                    ProductId = group.Key,
                    group.First().Inventory
                })
                                .ToArray();

                return(cartItems);
            }
        }