public DataControllerMessage <DishEditDTO> Get(string dishName) { string message = String.Empty; bool success = true; DishEditDTO data = null; try { DishEntity dishEntity = unitOfWork.Dishes.Get(dishName); if (dishEntity != null) { data = new DishEditDTO { NewName = dishEntity.Name, OldName = dishEntity.Name, Price = dishEntity.Price, CategoryName = dishEntity.Category.Name }; foreach (RecipeEntity recipeEntity in dishEntity.Recipes) { DishRecipeEditDTO dishRecipe = new DishRecipeEditDTO { Name = recipeEntity.Name, Description = recipeEntity.Description }; var ingredients = recipeEntity.RecipeIngredients.Select(ri => new IngredientPortion { Ingredient = ri.Ingredient.Name, Portion = ri.Portion }) .OrderBy(ingredient => ingredient.Ingredient); dishRecipe.Ingredients.AddRange(ingredients); data.Recipes.Add(dishRecipe); } } else { success = false; message = "Dish not found"; } } catch (Exception ex) { success = false; message = ExceptionMessageBuilder.BuildMessage(ex); } return(new DataControllerMessage <DishEditDTO>(success, message, data)); }
public DishEditViewModel(DishEditDTO dish, RecipeAddViewModel viewModel) { this.dish = dish; this.RecipeAddViewModel = viewModel; this.RemoveRecipeCommand = new DelegateCommand( () => Recipes.Remove(Recipe), obj => Recipe != null ); this.SaveRecipesCommand = new DelegateCommand( () => Save(dish), obj => CanSave() ); this.SaveCommand = new DelegateCommand( () => RaiseDishSaveRequestEvent(dish), obj => CanSave() ); this.DeleteCommand = new DelegateCommand(() => RaiseDishDeleteRequestEvent(dish)); this.Recipes = new ObservableCollection <DishRecipeEditDTO>(dish.Recipes); viewModel.RecipeAdded += (s, e) => { var addedRecipe = e.Data; if (!Recipes.Select(recipe => recipe.Name).Contains(addedRecipe.Name)) { DishRecipeEditDTO recipe = new DishRecipeEditDTO { Name = addedRecipe.Name, Description = addedRecipe.Description }; recipe.Ingredients.AddRange(addedRecipe.Ingredients); Recipes.Add(recipe); } }; }