Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static string ImportGames(VaporStoreDbContext context, string jsonString)
- {
- var builder = new StringBuilder();
- var serializer = JsonConvert.DeserializeObject<ImportGameDTO[]>(jsonString);
- //games, developers,genres,tags
- var listOfGames = new HashSet<Game>();
- var listOfDevelopers = new HashSet<Developer>();
- var listOfGenres = new HashSet<Genre>();
- var listofTags = new HashSet<Tag>();
- foreach (var dto in serializer)
- {
- //74 games, 66 developers, 12 genres and 25 tags.
- bool isDTOValid = IsValid(dto);
- bool flag = dto.Tags.Count > 0;
- bool flagForMissing = dto.Tags == null;
- if (!isDTOValid || !flag || flagForMissing)
- {
- builder.AppendLine(ErrorMessage);
- continue;
- }
- var dev = listOfDevelopers.SingleOrDefault(x => x.Name == dto.Developer);
- if (dev == null)
- {
- dev = new Developer
- {
- Name = dto.Developer
- };
- listOfDevelopers.Add(dev);
- }
- bool genreFlag = listOfGenres.Any(x => x.Name == dto.Genre);
- if (!genreFlag)
- {
- var genre = new Genre
- {
- Name = dto.Genre
- };
- listOfGenres.Add(genre);
- }
- var listOfCurrentTags = new List<Tag>();
- foreach (var tag in dto.Tags)
- {
- bool tagFlag = listofTags.Any(x => x.Name == tag);
- if (!tagFlag)
- {
- var currentTag = new Tag
- {
- Name = tag
- };
- listOfCurrentTags.Add(currentTag);
- listofTags.Add(currentTag);
- }
- else
- {
- listOfCurrentTags.Add(listofTags.FirstOrDefault(x => x.Name == tag));
- }
- }
- var parsedDate = DateTime.ParseExact(dto.ReleaseDate, "yyyy-MM-dd", CultureInfo.InvariantCulture);
- var game = new Game()
- {
- Developer = listOfDevelopers.FirstOrDefault(x => x.Name == dto.Developer),
- Name = dto.Name,
- ReleaseDate = parsedDate,
- Genre = listOfGenres.FirstOrDefault(x => x.Name == dto.Genre),
- Price = dto.Price,
- GameTags =
- listOfCurrentTags
- .Select(x => new GameTag()
- {
- Tag = x
- })
- .ToList()
- };
- //Added Dota 2 (Action) with 7 tags
- listOfGames.Add(game);
- string message = $"Added {game.Name} ({game.Genre.Name}) with {game.GameTags.Count()} tags";
- builder.AppendLine(message);
- }
- return builder.ToString().TrimEnd();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement