private static List <string> ControlRecipeUpdate(RecipeViewModel.Update recipe) { List <string> errors = new List <string>(); if (recipe.Name == null) { errors.Add("NameMissing"); } else if (recipe.Name.Count() < 5 || recipe.Name.Count() > 70) { errors.Add("NameWrongLength"); } if (recipe.Description == null) { errors.Add("DescriptionMissing"); } else if (recipe.Description.Count() < 10 || recipe.Description.Count() > 300) { errors.Add("DescriptionWrongLength"); } if (recipe.Directions == null) { errors.Add("DirectionsMissing"); } else { foreach (var d in recipe.Directions) { if (d.Order == default(int)) { errors.Add("DirectionOrderMissing"); } if (d.Description == null) { errors.Add("DirectionDescriptionMissing"); } else if (d.Description.Count() < 5 || d.Description.Count() > 120) { errors.Add("DirectionDescriptionWrongLength"); } } } return(errors); }
public IActionResult UpdateRecipe([FromBody] RecipeViewModel.Update rvm, int id) { var recipe = RecipeManager.Get(id); if (recipe == null) { return(NotFound("404: Not found.")); } if (recipe.CreatorId != User.Claims.FirstOrDefault(c => c.Type == "UserId").Value) { return(Unauthorized()); } List <string> errorCodes = ControlRecipeUpdate(rvm); if (errorCodes.Count > 0) { return(BadRequest(errorCodes)); } RecipeManager.Update(rvm, id); return(NoContent()); }
public Recipe Update(RecipeViewModel.Update rvm, int id) { try { var directions = DbContext.Directions.Where(d => d.RecipeId == id).ToList(); foreach (var d in directions) { DbContext.Remove(d); } DbContext.SaveChanges(); var recipe = DbContext.Recipes.Where(r => r.Id == id).First(); recipe.Name = rvm.Name; recipe.Description = rvm.Description; recipe.Directions = rvm.Directions; DbContext.SaveChanges(); return(recipe); } catch (Exception) { throw; } }