public async Task <Ingredient> CreateAsync(IngredientCreateInputModel model) { var ingredient = AutoMapper.Mapper.Map <Ingredient>(model); if (model.AllergenIds != null) { foreach (var item in model.AllergenIds) { var allergen = this.dbContext.Allergens.FirstOrDefault(x => x.Id == item); if (allergen == null) { return(null); } IngredientAllergen ingredientAllergen = new IngredientAllergen { IngredientId = ingredient.Id, AllergenId = item, Allergen = allergen, }; ingredientAllergen = this.dbContext.IngredientAllergen.Add(ingredientAllergen).Entity; ingredient.IngredientAllergens.Add(ingredientAllergen); } } ingredient = this.dbContext.Ingredients.Add(ingredient).Entity; await this.dbContext.SaveChangesAsync(); return(ingredient); }
public async Task <Ingredient> EditAsync(IngredientEditInputModel model) { var ingredientFromDb = this.dbContext.Ingredients .Include(x => x.IngredientAllergens) .FirstOrDefault(x => x.Id == model.Id); if (ingredientFromDb == null) { return(null); } ingredientFromDb.Name = model.Name; ingredientFromDb.Description = model.Description; ingredientFromDb.ImagePath = model.ImagePath; ingredientFromDb.ModifiedOn = DateTime.UtcNow; if (model.AllergenNames != null) { var oldallergens = this.dbContext.IngredientAllergen .Include(x => x.Allergen) .Where(x => x.IngredientId == ingredientFromDb.Id) .ToList(); foreach (var item in model.AllergenNames) { if (item == "RemoveOlds") { this.dbContext.RemoveRange(); continue; } var allergen = this.dbContext.Allergens.FirstOrDefault(x => x.Name == item); if (allergen == null) { continue; } IngredientAllergen ingredientAllergen = new IngredientAllergen { Ingredient = ingredientFromDb, Allergen = allergen, }; if (oldallergens.Select(x => x.Allergen).Contains(allergen)) { continue; } ingredientAllergen = this.dbContext.IngredientAllergen.Add(ingredientAllergen).Entity; } } await this.dbContext.SaveChangesAsync(); return(ingredientFromDb); }