public bool UpdateRecipe(RecipeView recipe) { var updatedRecipe = GetRecipeById(recipe.Id); if (updatedRecipe != null) { updatedRecipe.Name = recipe.Name; updatedRecipe.Description = recipe.Description; updatedRecipe.RecipeTags.RemoveAll(r => r.RecipeId == recipe.Id); SaveChanges(); //update tags at some point foreach (string t in recipe.Tags) { var result = _tags.FindTag(t); if (result == null) { result = _tags.AddTag(t); } //add the 'join' between recipe and tag _recipe.Add(new RecipeTag { RecipeId = recipe.Id, TagId = result.Id }); } _recipe.Recipes.Update(updatedRecipe); SaveChanges(); return(true); } else { return(false); } }
public IActionResult Recipe([FromBody] RecipeView r) { if (ModelState.IsValid) { //automapper var recipe = new Recipe { Name = r.Name, Description = r.Description }; if (_recipe.AddRecipe(recipe)) { // see if tags exist, if not add them // then add many-many mapping via recipetag foreach (string t in r.Tags) { var result = _tags.FindTag(t); if (result == null) { result = _tags.AddTag(t); } //add the 'join' between recipe and tag _context.Add(new RecipeTag { RecipeId = recipe.Id, TagId = result.Id }); _context.SaveChanges(); } var uri = Url.Link("RecipeById", new { recipe.Id }); RecipeView rv = RecipeToView(recipe); return(Created(uri, rv)); } else { return(BadRequest("Invalid Recipe - cannot add to database")); } } else //model state is invalid { return(BadRequest("Invalid Model")); } }