コード例 #1
0
        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);
            }
        }
コード例 #2
0
        public async Task <IActionResult> UpdateJoke(UpdateJokeDto updateJokeDto)
        {
            var jokeDto = await this.jokeService.UpdateJokeAsync(updateJokeDto);

            return(Ok(jokeDto));
        }