public dynamic Get(int id) { using (var db = ShippingContext.Create()) { var item = db.ProductShippingOptions .Include(pso => pso.Options) .Where(o => o.ProductId == id) .SingleOrDefault(); return(item); } }
public IEnumerable <dynamic> Get(string ids) { using (var db = ShippingContext.Create()) { var productIds = ids.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Select(s => int.Parse(s)).ToArray(); var items = db.ProductShippingOptions .Include(pso => pso.Options) .Where(status => productIds.Any(id => id == status.ProductId)) .ToArray(); return(items); } }
public async Task Handle(CleanupFailedCartRequest message, IMessageHandlerContext context) { using (var db = ShippingContext.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 = ShippingContext.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 = ShippingContext.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().DeliveryEstimate }) .ToArray(); return(cartItems); } }
public async Task Handle(AddItemToCart message, IMessageHandlerContext context) { using (var db = ShippingContext.Create()) { var requestAlreadyHandled = await db.ShoppingCartItems .Where(o => o.RequestId == message.RequestId) .SingleOrDefaultAsync() != null; if (!requestAlreadyHandled) { var shippingOptions = db.ProductShippingOptions .Include(so => so.Options) .Where(o => o.ProductId == message.ProductId) .Single(); var shortest = shippingOptions.Options.Min(o => o.EstimatedMinDeliveryDays); var longest = shippingOptions.Options.Max(o => o.EstimatedMaxDeliveryDays); var estimate = ""; if (shortest == int.MaxValue && longest == int.MaxValue) { estimate = "ah ah ah ah ah ah"; } else { estimate = $"between {shortest} and {longest} days"; } db.ShoppingCartItems.Add(new ShoppingCartItem() { CartId = message.CartId, RequestId = message.RequestId, ProductId = message.ProductId, DeliveryEstimate = estimate, Quantity = message.Quantity }); await db.SaveChangesAsync(); } } }