Ejemplo n.º 1
0
        private void UpdateRecipeTags(Recipe originalRecipe, RecipeUpdateDTO updatedRecipe)
        {
            List <Guid> tagsToRemoveGuids = new List <Guid>();
            List <Guid> tagsToAddGuids    = new List <Guid>();

            if (updatedRecipe.Tags != null)
            {
                updatedRecipe.Tags.ForEach(t => {
                    if (!_recipesRepository.ContainsTag(updatedRecipe.Id, t.Id))
                    {
                        tagsToAddGuids.Add(t.Id);
                    }
                });
            }

            if (originalRecipe.RecipeTags != null && updatedRecipe.Tags != null)
            {
                originalRecipe.RecipeTags.ForEach(rt =>
                {
                    if (!updatedRecipe.Tags.Any(t => t.Id == rt.TagId))
                    {
                        tagsToRemoveGuids.Add(rt.TagId);
                    }
                });
            }

            tagsToRemoveGuids.ForEach(g => _recipesRepository.RemoveTagById(g));
            tagsToAddGuids.ForEach(g => _recipesRepository.AddTag(
                                       new RecipeTag
            {
                Id       = Guid.NewGuid(),
                TagId    = g,
                RecipeId = updatedRecipe.Id
            }));
        }