示例#1
0
        //Tested
        public async Task AddCocktail(CocktailDto cocktailDto)
        {
            cocktailDto.ValidateIfNull("Model is not valid!");

            var uniqueFileNamePath = _fileUploadService.SetUniqueImagePathForCocktail(cocktailDto.CocktailImage);

            cocktailDto.Image = uniqueFileNamePath;
            var cocktail = cocktailDto.MapToCocktailModel();

            _context.Cocktails.Add(cocktail);
            await _context.SaveChangesAsync();

            foreach (var cocktailComponenetDTO in cocktailDto.Ingredients)
            {
                var ingridientId = await _ingredientServices.GetIngredientIdByNameAsync(cocktailComponenetDTO.Ingredient);

                _context.CocktailComponent.Add(
                    new CocktailComponent
                {
                    CocktailId   = cocktail.Id,
                    IngredientId = ingridientId,
                    Quantity     = cocktailComponenetDTO.Quantity,
                    Unit         = cocktailComponenetDTO.Unit,
                    Name         = cocktailComponenetDTO.Ingredient
                });
            }
            cocktail.Recepie = await _recipeServices.ExtractRecipe(cocktail);

            await _context.SaveChangesAsync();
        }
示例#2
0
        //Tested
        public async Task <string> Update(CocktailDto cocktailDto)
        {
            cocktailDto.ValidateIfNull("Model is invalid!");
            var cocktailToEdit = await GetCocktail(cocktailDto.Id);

            var cocktail = cocktailDto.MapToEditModel();

            var uniqueFileNamePath = _fileUploadService.SetUniqueImagePathForCocktail(cocktailDto.CocktailImage);

            cocktail.Image  = uniqueFileNamePath;
            cocktail.Rating = cocktailToEdit.Rating;
            var newCocktailComponents = new List <CocktailComponent>();

            foreach (var component in cocktail.CocktailComponents)
            {
                var ingridientId = await _ingredientServices
                                   .GetIngredientIdByNameAsync(component.Name);

                if (ingridientId == null)
                {
                    var newIngr = new Ingredient()
                    {
                        Name = component.Name
                    };
                    _context.Add(newIngr);
                    await _context.SaveChangesAsync();

                    ingridientId = newIngr.Id;
                }
                newCocktailComponents.Add(
                    new CocktailComponent
                {
                    CocktailId   = cocktailDto.Id,
                    IngredientId = ingridientId
                });
            }
            cocktail.CocktailComponents = newCocktailComponents;
            cocktail.Recepie            = await _recipeServices.ExtractRecipe(cocktail);

            _context.Entry(cocktailToEdit).CurrentValues.SetValues(cocktail);
            _context.RemoveRange(cocktailToEdit.CocktailComponents);
            _context.AddRange(cocktail.CocktailComponents);
            await _context.SaveChangesAsync();

            cocktail.Recepie = await _recipeServices.ExtractRecipe(cocktailToEdit);

            await _context.SaveChangesAsync();

            return(cocktailToEdit.Name);
        }