Beispiel #1
0
        private static async Task SeedOrdersOfUser(FitStoreDbContext database, IEnumerable <OrderSupplements> supplementsInOrder, User user)
        {
            DateTime previousOrderPurchaseDate = database.Orders.LastOrDefault() == null
                ? DateTime.UtcNow
                : database.Orders.Last().PurchaseDate;

            Order order = new Order
            {
                UserId       = user.Id,
                PurchaseDate = previousOrderPurchaseDate.AddDays(-45)
            };

            await database.Orders.AddAsync(order);

            await database.SaveChangesAsync();

            foreach (OrderSupplements supplementInOrder in supplementsInOrder)
            {
                OrderSupplements supplement = new OrderSupplements
                {
                    OrderId      = order.Id,
                    SupplementId = supplementInOrder.SupplementId,
                    Quantity     = supplementInOrder.Quantity,
                    Price        = supplementInOrder.Price
                };

                order.Supplements.Add(supplement);
            }

            order.TotalPrice = order.Supplements.Sum(s => s.Quantity * s.Price);
        }
        public async Task <bool> FinishOrderAsync(string userId, ShoppingCart shoppingCart)
        {
            foreach (SupplementInCartServiceModel supplementInCart in shoppingCart.Supplements)
            {
                Supplement supplement = await this.database
                                        .Supplements
                                        .Where(s => s.Id == supplementInCart.Id)
                                        .FirstOrDefaultAsync();

                if (supplement.Quantity < supplementInCart.Quantity)
                {
                    return(false);
                }

                supplement.Quantity -= supplementInCart.Quantity;
            }

            Order order = new Order
            {
                UserId       = userId,
                PurchaseDate = DateTime.UtcNow,
                TotalPrice   = shoppingCart.TotalPrice
            };

            await this.database.Orders.AddAsync(order);

            await this.database.SaveChangesAsync();

            foreach (SupplementInCartServiceModel supplementInCart in shoppingCart.Supplements)
            {
                OrderSupplements supplement = new OrderSupplements
                {
                    OrderId      = order.Id,
                    SupplementId = supplementInCart.Id,
                    Quantity     = supplementInCart.Quantity,
                    Price        = supplementInCart.Price
                };

                order.Supplements.Add(supplement);
            }

            await this.database.SaveChangesAsync();

            return(true);
        }