//Deletes the first active order for the given store in the database public void Delete(Store store) { var orders = _db.Pborder.Include(t => t.Store); var pizzaOrders = _db.PizzaOrder.Include(t => t.Order); Pborder orderToDelete = null; //Retrieve order to delete foreach (var order in orders.ToList()) { if (order.Store.Name == store.Name) { orderToDelete = order; break; } } //Remove attached PizzaOrders foreach (var pizzaOrder in pizzaOrders.ToList()) { if (pizzaOrder.OrderId == orderToDelete.OrderId) { _db.PizzaOrder.Attach(pizzaOrder); _db.PizzaOrder.Remove(pizzaOrder); _db.SaveChanges(); } } //Remove the order _db.Pborder.Attach(orderToDelete); _db.Pborder.Remove(orderToDelete); _db.SaveChanges(); }
//Creates Pborders and PizzaOrders in the database for each newly-created order at the end of program execution public void Create(User user, Store userStore) { int userId = -1; int storeId = -1; //Retrieve IDs of user and store foreach (var pbuser in _db.Pbuser.ToList()) { if (pbuser.Name == user.Name) { userId = pbuser.UserId; break; } } foreach (var pbstore in _db.Pbstore.ToList()) { if (pbstore.Name == userStore.Name) { storeId = pbstore.StoreId; break; } } //Save new user's orders foreach (var order in user.Orders) { if (order.IsNew) { Pborder pborder = new Pborder(); pborder.Name = order.Name; pborder.UserId = userId; pborder.StoreId = storeId; _db.Pborder.Add(pborder); _db.SaveChanges(); //Add pizza relationships to order foreach (var pizza in order.Pizzas) { int pizzaId = -1; //Find pizzaId by name foreach (var dbpizza in _db.Pizza.ToList()) { if (dbpizza.Name == pizza.ToString()) { pizzaId = dbpizza.PizzaId; break; } } //Create a row in the PizzaOrder junction table PizzaOrder pizzaOrder = new PizzaOrder(); pizzaOrder.OrderId = pborder.OrderId; pizzaOrder.PizzaId = pizzaId; _db.PizzaOrder.Add(pizzaOrder); _db.SaveChanges(); } } } }