Пример #1
0
        public async Task <Ingredient> CreateAsync(IngredientCreateInputModel model)
        {
            var ingredient = AutoMapper.Mapper.Map <Ingredient>(model);

            if (model.AllergenIds != null)
            {
                foreach (var item in model.AllergenIds)
                {
                    var allergen = this.dbContext.Allergens.FirstOrDefault(x => x.Id == item);

                    if (allergen == null)
                    {
                        return(null);
                    }

                    IngredientAllergen ingredientAllergen = new IngredientAllergen
                    {
                        IngredientId = ingredient.Id,
                        AllergenId   = item,
                        Allergen     = allergen,
                    };

                    ingredientAllergen = this.dbContext.IngredientAllergen.Add(ingredientAllergen).Entity;

                    ingredient.IngredientAllergens.Add(ingredientAllergen);
                }
            }

            ingredient = this.dbContext.Ingredients.Add(ingredient).Entity;

            await this.dbContext.SaveChangesAsync();

            return(ingredient);
        }
Пример #2
0
        public async Task <Ingredient> EditAsync(IngredientEditInputModel model)
        {
            var ingredientFromDb = this.dbContext.Ingredients
                                   .Include(x => x.IngredientAllergens)
                                   .FirstOrDefault(x => x.Id == model.Id);

            if (ingredientFromDb == null)
            {
                return(null);
            }

            ingredientFromDb.Name        = model.Name;
            ingredientFromDb.Description = model.Description;
            ingredientFromDb.ImagePath   = model.ImagePath;
            ingredientFromDb.ModifiedOn  = DateTime.UtcNow;

            if (model.AllergenNames != null)
            {
                var oldallergens = this.dbContext.IngredientAllergen
                                   .Include(x => x.Allergen)
                                   .Where(x => x.IngredientId == ingredientFromDb.Id)
                                   .ToList();

                foreach (var item in model.AllergenNames)
                {
                    if (item == "RemoveOlds")
                    {
                        this.dbContext.RemoveRange();
                        continue;
                    }

                    var allergen = this.dbContext.Allergens.FirstOrDefault(x => x.Name == item);

                    if (allergen == null)
                    {
                        continue;
                    }

                    IngredientAllergen ingredientAllergen = new IngredientAllergen
                    {
                        Ingredient = ingredientFromDb,
                        Allergen   = allergen,
                    };

                    if (oldallergens.Select(x => x.Allergen).Contains(allergen))
                    {
                        continue;
                    }

                    ingredientAllergen = this.dbContext.IngredientAllergen.Add(ingredientAllergen).Entity;
                }
            }

            await this.dbContext.SaveChangesAsync();

            return(ingredientFromDb);
        }