public FoodItem AddFoodItem(AddFoodItemBindingModel model) { var foodItemMacroElements = new List <FoodItemMacroElement>(); var foodItemMicroElements = new List <FoodItemMicroElement>(); foreach (var macroElement in model.MacroElements) { var foodItemMacroElement = new FoodItemMacroElement { AmountInGrams = macroElement.AmountInGramsPer100Grams, MacroElement = this.context.MacroElements.FirstOrDefault(me => me.Name == macroElement.Name) }; foodItemMacroElements.Add(foodItemMacroElement); } foreach (var microElement in model.MicroElements.Where(mi => mi.AmountInMilligramsPer100Grams > 0)) { var foodItemMicroElement = new FoodItemMicroElement { AmountInMilligrams = microElement.AmountInMilligramsPer100Grams, MicroElement = this.context.MicroElements.FirstOrDefault(me => me.Name == microElement.Name) }; foodItemMicroElements.Add(foodItemMicroElement); } var foodItem = new FoodItem { Name = model.Name, Description = model.Description, FoodItemMacroElements = foodItemMacroElements, FoodItemMicroElements = foodItemMicroElements }; this.context.FoodItems.Add(foodItem); this.context.SaveChanges(); if (model.Image != null) { var foodItemId = this.context.FoodItems.First(fi => fi.Name == model.Name).Id; var imageLocation = this.imagesService.CreateImage(model.Image, this.GetType().Name.Replace("Service", string.Empty), foodItemId); this.context.FoodItems.First(fi => fi.Id == foodItemId).ImageLocation = imageLocation; foodItem.ImageLocation = imageLocation; context.SaveChanges(); } return(foodItem); }
public FoodItem EditFoodItem(EditFoodItemViewModel model) { var foodItem = this.context.FoodItems.Include(fi => fi.FoodItemMicroElements).ThenInclude(fime => fime.MicroElement) .Include(fi => fi.FoodItemMacroElements).ThenInclude(fime => fime.MacroElement) .FirstOrDefault(fi => fi.Id == model.Id); if (foodItem == null) { return(null); } foreach (var macroElementViewModel in model.MacroElements) { var macroElementInFoodItem = foodItem.FoodItemMacroElements.FirstOrDefault(fime => fime.MacroElement.Name == macroElementViewModel.Name); if (macroElementInFoodItem != null) { macroElementInFoodItem.AmountInGrams = macroElementViewModel.AmountInGramsPer100Grams; } else { var newFoodItemMacroElement = new FoodItemMacroElement { FoodItem = foodItem, MacroElement = this.context.MacroElements.First(me => me.Name == macroElementViewModel.Name), AmountInGrams = macroElementViewModel.AmountInGramsPer100Grams }; foodItem.FoodItemMacroElements.Add(newFoodItemMacroElement); } } foreach (var microElementViewModel in model.MicroElements) { var microElementInFoodItem = foodItem.FoodItemMicroElements.FirstOrDefault(fime => fime.MicroElement.Name == microElementViewModel.Name); if (microElementInFoodItem != null) { microElementInFoodItem.AmountInMilligrams = microElementViewModel.AmountInMilligramsPer100Grams; } else { var newFoodItemMicroElement = new FoodItemMicroElement { FoodItem = foodItem, MicroElement = this.context.MicroElements.First(me => me.Name == microElementViewModel.Name), AmountInMilligrams = microElementViewModel.AmountInMilligramsPer100Grams }; foodItem.FoodItemMicroElements.Add(newFoodItemMicroElement); } } foodItem.Name = model.Name; foodItem.Description = model.Description; if (model.NewImage != null) { string newImageLocation = this.imagesService.RecreateImage(model.NewImage, this.GetType().Name.Replace("Service", string.Empty), model.ImageLocation, model.Id); foodItem.ImageLocation = newImageLocation; } context.SaveChanges(); return(foodItem); }