public async Task CreateAsync(CreateRecipeInputModel input, string userId, string imagePath) { var recipe = new Recipe() { Name = input.Name, Instructions = input.Instructions, CookingTime = TimeSpan.FromMinutes(input.CookingTime), PreparationTime = TimeSpan.FromMinutes(input.PreparationTime), PortionsCount = input.PortionCount, CategoryId = input.CategoryId, AddedByUserId = userId, }; foreach (var inputIngredient in input.Ingredients) { var ingredient = this.ingredientsRepository.All().FirstOrDefault(x => x.Name == inputIngredient.Name); if (ingredient == null) { ingredient = new Ingredient() { Name = inputIngredient.Name, }; } recipe.Ingredients.Add(new RecipeIngredient() { Ingredient = ingredient, Quantity = inputIngredient.Quantity, }); } // /wwwroot/images/recipes/jhdsi-343g3h453-=g34g.jpg Directory.CreateDirectory($"{imagePath}/recipes/"); foreach (var image in input.Images) { var extension = Path.GetExtension(image.FileName).TrimStart('.'); if (!this.allowedExtensions.Any(x => extension.EndsWith(x))) { throw new Exception($"Invalid image extension {extension}"); } var dbImage = new Image { AddedByUserId = userId, Extension = extension, }; recipe.Images.Add(dbImage); var physicalPath = $"{imagePath}/recipes/{dbImage.Id}.{extension}"; // Save the file in to the directory await using Stream fileStream = new FileStream(physicalPath, FileMode.Create); await image.CopyToAsync(fileStream); } await this.recipesRepository.AddAsync(recipe); await this.recipesRepository.SaveChangesAsync(); }
public IActionResult CreateRecipe(CreateRecipeInputModel input) { _doctorService.CreateRecipe(input); return(Redirect("/")); }