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(); } } }
public dynamic Get(int id) { using (var db = WarehouseContext.Create()) { var item = db.StockItems .Where(o => o.ProductId == id) .SingleOrDefault(); return(item); } }
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(); } } }
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); } }