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);
            }
        }
Ejemplo n.º 3
0
        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();
                }
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
            }
        }
Ejemplo n.º 6
0
        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();
                }
            }
        }