private async Task AddImagesToJoke(CreateJokeDto jokeDto, Joke joke) { if (jokeDto.ImageNames.Count() != 0) { foreach (var imageName in jokeDto.ImageNames) { if (string.IsNullOrWhiteSpace(imageName)) { continue; } var imageUrl = await mediaService.CopyFile(imageName, $"{imageName}", this.azureStorageBlobOptions.Value.FileTempPath, this.azureStorageBlobOptions.Value.FilePath); if (!string.IsNullOrWhiteSpace(imageUrl)) { JokeImage image = new JokeImage { Joke = joke, Url = imageUrl }; joke.JokeImages.Add(image); } } } }
public async Task <JokeDto> CreateNewJokeAsync(CreateJokeDto jokeDto) { using (IUnitOfWork uow = unitOfWorkFactory.CreateUnitOfWork()) { var jokeRepository = uow.GetRepository <IJokeRepository>(); var categoryRepository = uow.GetRepository <ICategoryRepository>(); Joke joke = mapper.Map <Joke>(jokeDto); var categories = categoryRepository.Find(c => jokeDto.Categories.Any(cd => cd == c.Id)); jokeRepository.Add(joke); joke.JokeCategories = categories.Select(c => new JokeCategory() { Category = c, Joke = joke }).ToList(); await AddImagesToJoke(jokeDto, joke); await uow.SaveChangesAsync(); var returnJoke = mapper.Map <JokeDto>(joke); returnJoke.Categories = joke.JokeCategories.Select(jc => jc.Category.Title).ToList(); returnJoke.ImageUrls = joke.JokeImages.Select(i => i.Url).ToList(); return(returnJoke); } }
public async Task <IActionResult> CreateJoke(CreateJokeDto createJokeDto) { var joke = await jokeService.CreateNewJokeAsync(createJokeDto); return(CreatedAtAction(nameof(CreateJoke), joke)); }