public async Task <JokeDto> UpdateJokeAsync(UpdateJokeDto jokeDto) { using (IUnitOfWork uow = unitOfWorkFactory.CreateUnitOfWork()) { var jokeRepository = uow.GetRepository <IJokeRepository>(); var joke = (await jokeRepository.FindAndMapAsync(j => j, j => j.Id == jokeDto.Id, null, new List <Expression <Func <Joke, object> > > { j => j.JokeCategories })) .FirstOrDefault(); if (joke == null) { throw new ArgumentException($"Joke with Id = {jokeDto.Id} does't exist"); } joke.Value = jokeDto.Value; await jokeRepository.UpdateJokeCategoriesAsync(joke, jokeDto.Categories); jokeRepository.Update(joke); await uow.SaveChangesAsync(); var categoryRepository = uow.GetRepository <ICategoryRepository>(); JokeDto returnJokeDto = this.mapper.Map <JokeDto>(joke); returnJokeDto.Categories = (await categoryRepository.FindAndMapAsync(c => c.Title, c => c.JokeCategories.Any(jc => jc.JokeId == joke.Id))).ToList(); return(returnJokeDto); } }
public async Task <IActionResult> UpdateJoke(UpdateJokeDto updateJokeDto) { var jokeDto = await this.jokeService.UpdateJokeAsync(updateJokeDto); return(Ok(jokeDto)); }