Пример #1
0
        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));
        }
Пример #2
0
        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();
        }