示例#1
0
        public int EditRecipe(EditRecipeViewModel editRecipe)
        {
            try
            {
                var recipe =
                    _recipeRepository.GetRecipeById(editRecipe.Id);
                if (recipe != null)
                {
                    using (var transaction = new TransactionScope())
                    {
                        recipe.Id                = editRecipe.Id;
                        recipe.RecipeName        = editRecipe.RecipeName;
                        recipe.RecipeImage       = editRecipe.RecipeImage ?? recipe.RecipeImage;
                        recipe.RecipeDescription = editRecipe.RecipeDescription;
                        recipe.CreatedAt         = editRecipe.CreatedAt;
                        recipe.ModefiedAt        = DateTime.Now;
                        recipe.CookingTime       = editRecipe.CookingTime;
                        recipe.RecipeCategoryId  = editRecipe.RecipeCategoryId;

                        List <int>   prodIdlist = new List <int>();
                        List <float> prodWeight = new List <float>();

                        var weights = recipe.RecipeProdRecords.Select(pr => new SelectProdWeightViewModel
                        {
                            Id     = pr.ProductId,
                            Name   = pr.Product.ProductName,
                            Weight = pr.Weight
                        }).ToList();
                        foreach (var w in weights)
                        {
                            prodWeight.Add(w.Weight);
                        }


                        foreach (var item in recipe.RecipeProdRecords)
                        {
                            prodIdlist.Add(item.Id);
                        }

                        _recipeProdRecordRepository.RemoveRecipe(editRecipe.Id);

                        _recipeProdRecordRepository.SaveChanges();
                        _recipeRepository.SaveChanges();
                        var i = 0;
                        foreach (var item in editRecipe.Products)
                        {
                            var prod = _productRepository.GetProductById(item);
                            if (prod != null)
                            {
                                try
                                {
                                    _recipeProdRecordRepository.Add(new RecipeProdRecord()
                                    {
                                        RecipeId = editRecipe.Id, ProductId = item, Weight = prodWeight[i]
                                    });
                                }
                                catch
                                {
                                    _recipeProdRecordRepository.Add(new RecipeProdRecord()
                                    {
                                        RecipeId = editRecipe.Id, ProductId = item, Weight = 0
                                    });
                                }
                            }
                            ++i;
                        }


                        List <int> menuIdlist = new List <int>();
                        foreach (var item in recipe.MenuRecipeRecords)
                        {
                            menuIdlist.Add(item.Id);
                        }

                        foreach (var item in menuIdlist)
                        {
                            _menuRecipeRecordRepository.Remove(item);
                        }

                        _menuRecipeRecordRepository.SaveChanges();
                        _recipeRepository.SaveChanges();

                        foreach (var item in editRecipe?.Menus)
                        {
                            var menu = _menuRepository.GetMenuById(item);
                            if (menu != null)
                            {
                                _menuRecipeRecordRepository.Add(new MenuRecipeRecord()
                                {
                                    RecipeId = editRecipe.Id, MenuId = item
                                });
                            }
                        }



                        _recipeProdRecordRepository.SaveChanges();
                        _menuRecipeRecordRepository.SaveChanges();
                        _recipeRepository.SaveChanges();
                        transaction.Complete();
                    }
                }
            }
            catch
            {
                return(0);
            }
            return(editRecipe.Id);
        }