Advertisement
Guest User

Untitled

a guest
Dec 6th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.36 KB | None | 0 0
  1. public static string ImportGames(VaporStoreDbContext context, string jsonString)
  2.         {
  3.             var builder = new StringBuilder();
  4.  
  5.             var serializer = JsonConvert.DeserializeObject<ImportGameDTO[]>(jsonString);
  6.             //games, developers,genres,tags
  7.             var listOfGames = new HashSet<Game>();
  8.             var listOfDevelopers = new HashSet<Developer>();
  9.             var listOfGenres = new HashSet<Genre>();
  10.             var listofTags = new HashSet<Tag>();
  11.  
  12.             foreach (var dto in serializer)
  13.             {
  14.                 //74 games, 66 developers, 12 genres and 25 tags.
  15.                 bool isDTOValid = IsValid(dto);
  16.  
  17.                 bool flag = dto.Tags.Count > 0;
  18.                 bool flagForMissing = dto.Tags == null;
  19.  
  20.                 if (!isDTOValid || !flag || flagForMissing)
  21.                 {
  22.                     builder.AppendLine(ErrorMessage);
  23.                     continue;
  24.                 }
  25.  
  26.                 var dev = listOfDevelopers.SingleOrDefault(x => x.Name == dto.Developer);
  27.                 if (dev == null)
  28.                 {
  29.                     dev = new Developer
  30.                     {
  31.                         Name = dto.Developer
  32.                     };
  33.                     listOfDevelopers.Add(dev);
  34.                 }
  35.  
  36.                 bool genreFlag = listOfGenres.Any(x => x.Name == dto.Genre);
  37.                 if (!genreFlag)
  38.                 {
  39.                     var genre = new Genre
  40.                     {
  41.                         Name = dto.Genre
  42.                     };
  43.                     listOfGenres.Add(genre);
  44.                 }
  45.  
  46.                 var listOfCurrentTags = new List<Tag>();
  47.                 foreach (var tag in dto.Tags)
  48.                 {
  49.                     bool tagFlag = listofTags.Any(x => x.Name == tag);
  50.  
  51.                     if (!tagFlag)
  52.                     {
  53.                         var currentTag = new Tag
  54.                         {
  55.                             Name = tag
  56.                         };
  57.                         listOfCurrentTags.Add(currentTag);
  58.                         listofTags.Add(currentTag);
  59.                     }
  60.                     else
  61.                     {
  62.                         listOfCurrentTags.Add(listofTags.FirstOrDefault(x => x.Name == tag));
  63.                     }
  64.                 }
  65.  
  66.                 var parsedDate = DateTime.ParseExact(dto.ReleaseDate, "yyyy-MM-dd", CultureInfo.InvariantCulture);
  67.                 var game = new Game()
  68.                 {
  69.                     Developer = listOfDevelopers.FirstOrDefault(x => x.Name == dto.Developer),
  70.                     Name = dto.Name,
  71.                     ReleaseDate = parsedDate,
  72.                     Genre = listOfGenres.FirstOrDefault(x => x.Name == dto.Genre),
  73.                     Price = dto.Price,
  74.                     GameTags =
  75.                        listOfCurrentTags
  76.                        .Select(x => new GameTag()
  77.                        {
  78.                            Tag = x
  79.                        })
  80.                        .ToList()
  81.                 };
  82.                 //Added Dota 2 (Action) with 7 tags
  83.                 listOfGames.Add(game);
  84.                 string message = $"Added {game.Name} ({game.Genre.Name}) with {game.GameTags.Count()} tags";
  85.                 builder.AppendLine(message);
  86.             }
  87.            
  88.             return builder.ToString().TrimEnd();
  89.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement