public async Task <NovelDto> AddNovel(NovelPostDto novelDto) { var newnovel = new Novel { Title = novelDto.Title, AltTitlesCollection = novelDto.AltTitles.ToImmutableArray() }; // set type var type = await _dbContext.Types.FindAsync(novelDto.TypeId); newnovel.Type = type ?? throw new DeepValidationException(nameof(novelDto.TypeId), $"Type with id:{novelDto.TypeId} was not found"); newnovel.Genres = new List <NovelGenre>(); foreach (var genreId in novelDto.GenreIds) { var genre = await _dbContext.Genres.FindAsync(genreId); if (genre == null) { throw new DeepValidationException(nameof(novelDto.GenreIds), $"Genre with id:{genreId} was not found"); } newnovel.Genres.Add(new NovelGenre { Genre = genre }); } newnovel.Tags = new List <NovelTag>(); foreach (var tagId in novelDto.TagIds) { var tag = await _dbContext.Tags.FindAsync(tagId); if (tag == null) { throw new DeepValidationException(nameof(novelDto.TagIds), $"Tag with id:{tagId} was not found"); } newnovel.Tags.Add(new NovelTag { Tag = tag }); } await _dbContext.Novels.AddAsync(newnovel); await _dbContext.SaveChangesAsync(); return(_mapper.Map <NovelDto>(newnovel)); }
public async Task Seed() { await _dbContext.Database.EnsureDeletedAsync(); await _dbContext.Database.EnsureCreatedAsync(); var tag1 = new Tag { Name = "tag1", Hint = "This is tag1" }; var tag2 = new Tag { Name = "tag2", Hint = "This is tag2" }; var genre1 = new Genre { Name = "genre1", Hint = "This is genre1" }; var genre2 = new Genre { Name = "genre2", Hint = "This is genre2" }; var genre3 = new Genre { Name = "genre3", Hint = "This is genre3" }; var type1 = new NovelType { Name = "Type1" }; var type2 = new NovelType { Name = "Type2" }; var novel1 = new Novel { Title = "Novel1Title", AltTitlesCollection = (new [] { "Novel1AltTitle1", "Novel1AltTitle2" }).ToImmutableArray(), Type = type1, Genres = new List <NovelGenre> { new NovelGenre { Genre = genre1 }, new NovelGenre { Genre = genre2 } }, Tags = new List <NovelTag> { new NovelTag { Tag = tag1 }, new NovelTag { Tag = tag2 } } }; var novel2 = new Novel { Title = "Novel2Title", AltTitlesCollection = (new[] { "Novel2AltTitle1", "Novel2AltTitle2" }).ToImmutableArray(), Type = type2, Genres = new List <NovelGenre> { new NovelGenre { Genre = genre3 }, new NovelGenre { Genre = genre2 } }, Tags = new List <NovelTag> { new NovelTag { Tag = tag2 } } }; await _dbContext.Novels.AddRangeAsync(novel1, novel2); await _dbContext.SaveChangesAsync(); }