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); }