public void RemoveProductFromShoppingList(Guid itemId) { using var context = new HomeAppDbContext(myDbOptions); DbShoppingListItem item = context.ShoppingListItems.Include(i => i.ShoppingListItemMeasurements).Include(s => s.ItemInfos).ThenInclude(i => i.RecipeItem).FirstOrDefault(s => s.Id == itemId); if (item == null) { throw new KeyNotFoundException($"{nameof(DbShoppingListItem)} with id {itemId} not found"); } context.ShoppingListItems.Remove(item); context.SaveChanges(); }
public void AddProductToShoppingList(Guid shoppingListId, AddProductToShoppingListRequest request) { using var context = new HomeAppDbContext(myDbOptions); var existingItem = context.ShoppingListItems.FirstOrDefault(o => o.ProductId == request.ProductId); bool addNew = false; if (existingItem == null) { addNew = true; existingItem = new DbShoppingListItem { IsChecked = false, Product = context.Products.First(p => p.Id == request.ProductId), ShoppingList = context.ShoppingLists.First() }; } var newItemInfo = new DbShoppingListItemInfo { MeasurementType = request.MeasurementType, MeasurementAmount = request.MeasurementAmount, Reason = request.Reason, ShoppingListItem = existingItem }; if (request.RecipeId != null && request.RecipeId != Guid.Empty) { newItemInfo.RecipeItem = new DbRecipeShoppingListItem { RecipeId = request.RecipeId, NrOfPersons = request.NrOfPersons, IsOnlyUnavailable = request.RecipeOnlyAvailable }; } if (addNew) { context.ShoppingListItems.Add(existingItem); } context.ShoppingListItemInfos.Add(newItemInfo); context.SaveChanges(); // var list = context.ShoppingLists.FirstOrDefault(s => s.Id == shoppingListId); // var productQuan = context.ProductQuantities.FirstOrDefault(s => s.Id == productQuantyId); // if (list == null) // { // throw new KeyNotFoundException($"{nameof(DbShoppingList)} with id {shoppingListId} not found"); // } // if (productQuan == null) // { // throw new KeyNotFoundException($"{nameof(DbProductQuantity)} with id {productQuantyId} not found"); // } // var item = context.ShoppingListItems.Include(i => i.ShoppingList).Include(i => i.ProductQuantities) // .FirstOrDefault(s => s.ShoppingList.Id == shoppingListId && s.ProductQuantities.Id == productQuantyId); // if (item != null) // { // item.Count += count; // context.SaveChanges(); // return; // } // var newItem = new DbShoppingListItem // { // ShoppingList = list, // Count = count, // ProductQuantities = productQuan // }; // context.ShoppingListItems.Add(newItem); // context.SaveChanges(); }