private static void SeedDatabase(VaporStoreDbContext context) { var gamesJson = "[{\"Id\":2,\"Name\":\"Factorio\"},{\"Id\":3,\"Name\":\"Yu-Gi-Oh! Duel Links\"},{\"Id\":4,\"Name\":\"Trove\"},{\"Id\":6,\"Name\":\"Wreckfest\"},{\"Id\":7,\"Name\":\"Terraria\"},{\"Id\":9,\"Name\":\"NBA 2K18\"},{\"Id\":11,\"Name\":\"Total War: WARHAMMER II\"},{\"Id\":12,\"Name\":\"Garry's Mod\"},{\"Id\":13,\"Name\":\"Rust\"},{\"Id\":17,\"Name\":\"Slay the Spire\"},{\"Id\":19,\"Name\":\"Bridge Constructor Portal\"},{\"Id\":20,\"Name\":\"Pro Cycling Manager 2018\"},{\"Id\":21,\"Name\":\"Dungeon Warfare 2\"},{\"Id\":22,\"Name\":\"Soul at Stake\"},{\"Id\":24,\"Name\":\"Tom Clancy's Ghost Recon Wildlands\"},{\"Id\":25,\"Name\":\"Neverwinter\"},{\"Id\":26,\"Name\":\"Squad\"},{\"Id\":27,\"Name\":\"Vampyr\"},{\"Id\":28,\"Name\":\"Brawlhalla\"},{\"Id\":29,\"Name\":\"Conan Exiles\"},{\"Id\":30,\"Name\":\"Call of Duty: Black Ops III\"},{\"Id\":31,\"Name\":\"Human: Fall Flat\"},{\"Id\":32,\"Name\":\"Guns, Gore and Cannoli 2\"},{\"Id\":33,\"Name\":\"DARK SOULS: REMASTERED\"},{\"Id\":34,\"Name\":\"The Elder Scrolls V: Skyrim Special Edition\"},{\"Id\":36,\"Name\":\"FINAL FANTASY XIV Online\"},{\"Id\":38,\"Name\":\"Warface\"},{\"Id\":39,\"Name\":\"NARUTO SHIPPUDEN: Ultimate Ninja STORM 4\"},{\"Id\":40,\"Name\":\"Black Desert Online\"},{\"Id\":41,\"Name\":\"Warhammer 40,000: Gladius - Relics of War\"},{\"Id\":42,\"Name\":\"Planet Coaster\"},{\"Id\":45,\"Name\":\"Rocket League\"},{\"Id\":46,\"Name\":\"Far Cry 5\"},{\"Id\":47,\"Name\":\"FOR HONOR\"},{\"Id\":48,\"Name\":\"Tom Clancy's Rainbow Six Siege\"},{\"Id\":49,\"Name\":\"Warframe\"},{\"Id\":51,\"Name\":\"MONSTER HUNTER: WORLD\"},{\"Id\":52,\"Name\":\"Team Fortress 2\"},{\"Id\":53,\"Name\":\"Counter-Strike: Global Offensive\"},{\"Id\":54,\"Name\":\"Path of Exile\"},{\"Id\":55,\"Name\":\"Rules Of Survival\"},{\"Id\":56,\"Name\":\"Banished\"},{\"Id\":59,\"Name\":\"Divinity: Original Sin 2\"},{\"Id\":61,\"Name\":\"Shadowverse CCG\"},{\"Id\":62,\"Name\":\"RimWorld\"},{\"Id\":63,\"Name\":\"Crash Bandicoot N. Sane Trilogy\"},{\"Id\":64,\"Name\":\"SMITE\"},{\"Id\":65,\"Name\":\"Paladins\"},{\"Id\":67,\"Name\":\"Stardew Valley\"},{\"Id\":68,\"Name\":\"House Flipper\"},{\"Id\":70,\"Name\":\"The Crew 2\"},{\"Id\":71,\"Name\":\"Dead by Daylight\"},{\"Id\":72,\"Name\":\"Football Manager 2018\"},{\"Id\":73,\"Name\":\"Raft\"},{\"Id\":74,\"Name\":\"The Witcher 3: Wild Hunt\"}]"; var games = JsonConvert.DeserializeObject <Game[]>(gamesJson); var usersJson = "[{\"Id\":1,\"Username\":\"lsilbert\",\"Cards\":[{\"Id\":1,\"Number\":\"1833 5024 0553 6211\"},{\"Id\":33,\"Number\":\"5625 0434 5999 6254\"},{\"Id\":34,\"Number\":\"4902 6975 5076 5316\"}]},{\"Id\":2,\"Username\":\"kmertgen\",\"Cards\":[{\"Id\":27,\"Number\":\"1268 2352 8506 0500\"}]},{\"Id\":3,\"Username\":\"svannini\",\"Cards\":[{\"Id\":24,\"Number\":\"8928 2433 2516 9511\"},{\"Id\":25,\"Number\":\"2175 1623 6855 0876\"},{\"Id\":26,\"Number\":\"1642 7380 2920 7598\"}]},{\"Id\":4,\"Username\":\"aputland\",\"Cards\":[{\"Id\":21,\"Number\":\"2263 5851 7894 9441\"},{\"Id\":22,\"Number\":\"7660 9400 3206 5606\"},{\"Id\":23,\"Number\":\"9454 1480 3127 1373\"}]},{\"Id\":5,\"Username\":\"vsjollema\",\"Cards\":[{\"Id\":18,\"Number\":\"7815 5830 0145 0448\"},{\"Id\":19,\"Number\":\"8608 6806 8238 3092\"},{\"Id\":20,\"Number\":\"4846 1275 4235 3039\"}]},{\"Id\":6,\"Username\":\"rabbison\",\"Cards\":[{\"Id\":17,\"Number\":\"5747 3965 9959 7596\"}]},{\"Id\":7,\"Username\":\"bgunston\",\"Cards\":[{\"Id\":14,\"Number\":\"4347 6119 2799 9266\"},{\"Id\":15,\"Number\":\"3762 5646 9250 3278\"},{\"Id\":16,\"Number\":\"9329 2624 0151 4535\"}]},{\"Id\":8,\"Username\":\"bgraith\",\"Cards\":[{\"Id\":12,\"Number\":\"5962 2881 2375 4209\"},{\"Id\":13,\"Number\":\"4611 7969 4921 6749\"}]},{\"Id\":9,\"Username\":\"mgillicuddy\",\"Cards\":[{\"Id\":10,\"Number\":\"4499 3123 4695 9542\"},{\"Id\":11,\"Number\":\"9924 7778 1587 0277\"}]},{\"Id\":10,\"Username\":\"ehellard\",\"Cards\":[{\"Id\":7,\"Number\":\"2643 8516 1644 3240\"},{\"Id\":8,\"Number\":\"3013 7441 5769 1224\"},{\"Id\":9,\"Number\":\"3563 6747 1527 9955\"}]},{\"Id\":11,\"Username\":\"mdickson\",\"Cards\":[{\"Id\":4,\"Number\":\"5317 5177 3653 0084\"},{\"Id\":5,\"Number\":\"0100 5244 4964 3100\"},{\"Id\":6,\"Number\":\"1478 0420 6326 7013\"}]},{\"Id\":12,\"Username\":\"bfrontczak\",\"Cards\":[{\"Id\":2,\"Number\":\"3962 3870 5087 4536\"},{\"Id\":3,\"Number\":\"9104 6735 7127 3894\"}]},{\"Id\":13,\"Username\":\"mgraveson\",\"Cards\":[{\"Id\":29,\"Number\":\"7991 7779 5123 9211\"},{\"Id\":31,\"Number\":\"7790 7962 4262 5606\"}]},{\"Id\":14,\"Username\":\"fstoter\",\"Cards\":[{\"Id\":60,\"Number\":\"9466 9592 0503 1368\"}]},{\"Id\":15,\"Username\":\"bcorcut\",\"Cards\":[{\"Id\":32,\"Number\":\"7460 6498 2791 0231\"}]},{\"Id\":16,\"Username\":\"asikorsky\",\"Cards\":[{\"Id\":58,\"Number\":\"8746 7253 1464 1729\"},{\"Id\":59,\"Number\":\"3863 8683 6862 0373\"}]},{\"Id\":17,\"Username\":\"klife\",\"Cards\":[{\"Id\":56,\"Number\":\"0540 4834 3653 5943\"},{\"Id\":57,\"Number\":\"2962 0872 0998 4724\"}]},{\"Id\":18,\"Username\":\"gsmallthwaite\",\"Cards\":[{\"Id\":53,\"Number\":\"9889 9719 6896 7474\"},{\"Id\":54,\"Number\":\"5994 2396 1516 2411\"},{\"Id\":55,\"Number\":\"0274 2943 4672 4028\"}]},{\"Id\":19,\"Username\":\"kroderighi\",\"Cards\":[{\"Id\":52,\"Number\":\"7036 3344 0149 7880\"}]},{\"Id\":20,\"Username\":\"hrichardson\",\"Cards\":[{\"Id\":50,\"Number\":\"4082 9960 2674 5955\"},{\"Id\":51,\"Number\":\"5811 6621 2962 1020\"}]},{\"Id\":21,\"Username\":\"atobin\",\"Cards\":[{\"Id\":48,\"Number\":\"6975 1775 3435 4897\"},{\"Id\":49,\"Number\":\"9039 3485 8754 8863\"}]},{\"Id\":22,\"Username\":\"fdedam\",\"Cards\":[{\"Id\":46,\"Number\":\"9574 1800 3833 2972\"},{\"Id\":47,\"Number\":\"9976 1161 9586 1806\"}]},{\"Id\":23,\"Username\":\"cbelchamber\",\"Cards\":[{\"Id\":44,\"Number\":\"1576 2740 8903 1499\"},{\"Id\":45,\"Number\":\"6842 0546 4406 5606\"}]},{\"Id\":24,\"Username\":\"kcarroll\",\"Cards\":[{\"Id\":41,\"Number\":\"2844 3311 3796 4444\"},{\"Id\":42,\"Number\":\"7716 6230 0769 9366\"},{\"Id\":43,\"Number\":\"2829 0002 6052 6217\"}]},{\"Id\":25,\"Username\":\"wskep\",\"Cards\":[{\"Id\":40,\"Number\":\"0327 7877 3023 9451\"}]},{\"Id\":26,\"Username\":\"nparadyce\",\"Cards\":[{\"Id\":38,\"Number\":\"0798 3871 2521 2016\"},{\"Id\":39,\"Number\":\"1661 2121 6244 8487\"}]},{\"Id\":27,\"Username\":\"dsharple\",\"Cards\":[{\"Id\":36,\"Number\":\"5345 7357 8866 7508\"},{\"Id\":37,\"Number\":\"6752 6869 9870 9732\"}]},{\"Id\":28,\"Username\":\"aruthven\",\"Cards\":[{\"Id\":35,\"Number\":\"5208 8381 5687 8508\"}]},{\"Id\":29,\"Username\":\"cgara\",\"Cards\":[{\"Id\":28,\"Number\":\"5103 9356 9768 6854\"}]},{\"Id\":30,\"Username\":\"spaprotny\",\"Cards\":[{\"Id\":30,\"Number\":\"9185 2070 3009 4543\"},{\"Id\":61,\"Number\":\"6777 2480 1837 5824\"}]}]"; var users = JsonConvert.DeserializeObject <User[]>(usersJson); context.AddRange(games); context.AddRange(users); context.SaveChanges(); }
public static string ImportPurchases(VaporStoreDbContext context, string xmlString) { var xmlSerializer = new XmlSerializer(typeof(PurchaseDto[]), new XmlRootAttribute("Purchases")); var deserializedPurchases = (PurchaseDto[])xmlSerializer.Deserialize(new StringReader(xmlString)); var sb = new StringBuilder(); var purchases = new List <Purchase>(); foreach (var purchaseDto in deserializedPurchases) { if (!IsValid(purchaseDto)) { sb.AppendLine(FailureMsg); continue; } var isTypeValid = Enum.TryParse(purchaseDto.Type, out PurchaseType purType); if (!isTypeValid) { sb.AppendLine(FailureMsg); continue; } var card = context.Cards.FirstOrDefault(c => c.Number == purchaseDto.Card); if (card == null) { sb.AppendLine(FailureMsg); continue; } var game = context.Games.FirstOrDefault(g => g.Name == purchaseDto.Title); if (game == null) { sb.AppendLine(FailureMsg); continue; } var date = DateTime.ParseExact(purchaseDto.Date, XmlDateFormat, CultureInfo.InvariantCulture); var purchase = new Purchase() { Game = game, Card = card, Date = date, ProductKey = purchaseDto.Key, Type = purType }; purchases.Add(purchase); sb.AppendLine($"Imported {purchaseDto.Title} for {card.User.Username}"); } context.AddRange(purchases); context.SaveChanges(); return(sb.ToString().Trim()); }
public static string ImportPurchases(VaporStoreDbContext context, string xmlString) { var outputResult = new StringBuilder(); var validPurchasesToAdd = new List <Purchase>(); var purchasesDtos = XmlConverter.Deserializer <ImportPurchaseDto>(xmlString, "Purchases"); foreach (var purchaseDto in purchasesDtos) { PurchaseType purchaseType; var isGenreValid = Enum.TryParse <PurchaseType>(purchaseDto.Type, true, out purchaseType); var targetGame = context.Games.FirstOrDefault(x => x.Name == purchaseDto.Title); var targetCard = context.Cards.FirstOrDefault(x => x.Number == purchaseDto.Card); if (!IsValid(purchaseDto) || targetGame == null || !isGenreValid || targetCard == null) { outputResult.AppendLine(ErrorMessage); continue; } var newPurchase = new Purchase { Game = targetGame, Type = purchaseType, ProductKey = purchaseDto.ProductKey, Date = DateTime.ParseExact(purchaseDto.Date, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture), Card = targetCard }; validPurchasesToAdd.Add(newPurchase); outputResult.AppendLine(string.Format(SuccessfullyImportedPurchase, newPurchase.Game.Name, newPurchase.Card.User.Username)); } context.AddRange(validPurchasesToAdd); context.SaveChanges(); return(outputResult.ToString().TrimEnd()); }
public static string ImportPurchases(VaporStoreDbContext context, string xmlString) { var xmlSerializer = new XmlSerializer(typeof(PurchaseDto[]), new XmlRootAttribute("Purchases")); var purchasesDto = (PurchaseDto[])(xmlSerializer.Deserialize(new StringReader(xmlString))); var sb = new StringBuilder(); var purchases = new List <Purchase>(); foreach (var purchaseDto in purchasesDto) { if (!isValid(purchasesDto)) { sb.AppendLine("Invalid Data"); continue; } var isValidEnum = Enum.TryParse <PurchaseType>(purchaseDto.Type, out PurchaseType result); if (!isValidEnum) { sb.AppendLine("Invalid Data"); continue; } var gameTitle = purchaseDto.Title; var cardNumber = purchaseDto.Card; var game = context.Games.FirstOrDefault(x => x.Name == gameTitle); var card = context.Cards.FirstOrDefault(x => x.Number == cardNumber); if (game == null || card == null) { sb.AppendLine("Invalid Data"); continue; } var purchase = new Purchase() { Type = result, ProductKey = purchaseDto.Key, Date = DateTime.ParseExact(purchaseDto.Date, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture), Game = game, Card = card }; purchases.Add(purchase); sb.AppendLine($"Imported {purchase.Game.Name} for {purchase.Card.User.Username}"); } context.AddRange(purchases); context.SaveChanges(); string finalResult = sb.ToString().Trim(); return(finalResult); }
public static string ImportUsers(VaporStoreDbContext context, string jsonString) { var result = new StringBuilder(); var importedDtos = JsonConvert.DeserializeObject <List <UserDto> >(jsonString); var validUsers = new List <User>(); foreach (var userDto in importedDtos) { if (!IsValid(userDto)) { result.AppendLine(ErrorMessage); continue; } var cards = new List <Card>(); var cardsAreValid = true; foreach (var cardDto in userDto.Cards) { if (!IsValid(cardDto) || !Enum.TryParse <CardType>(cardDto.Type, out CardType type)) { cardsAreValid = false; break; } var card = new Card { Number = cardDto.Number, Cvc = cardDto.Cvc, Type = type }; cards.Add(card); } var user = new User { FullName = userDto.FullName, Username = userDto.Username, Email = userDto.Email, Age = userDto.Age, Cards = cards }; validUsers.Add(user); result.AppendLine($"Imported {user.Username} with {user.Cards.Count} cards"); } context.AddRange(validUsers); context.SaveChanges(); return(result.ToString()); }
public static string ImportUsers(VaporStoreDbContext context, string jsonString) { var usersDtos = JsonConvert.DeserializeObject <UserDto[]>(jsonString); StringBuilder sb = new StringBuilder(); var users = new List <User>(); foreach (var dto in usersDtos) { if (!IsValid(dto)) { sb.AppendLine(InvalidData); continue; } if (dto.Cards.Any(x => !IsValid(x))) { sb.AppendLine(InvalidData); continue; } var cards = new List <Card>(); foreach (var cardDto in dto.Cards) { var card = new Card() { Number = cardDto.Number, Cvc = cardDto.Cvc, Type = cardDto.Type }; cards.Add(card); } var user = new User() { FullName = dto.FullName, Username = dto.Username, Email = dto.Email, Age = dto.Age, Cards = cards }; users.Add(user); sb.AppendLine($"Imported {user.Username} with {user.Cards.Count} cards"); } context.AddRange(users); context.SaveChanges(); return(sb.ToString().TrimEnd()); }
public static string ImportUsers(VaporStoreDbContext context, string jsonString) { var sb = new StringBuilder(); var dtos = JsonConvert.DeserializeObject <ImportUserDto[]>(jsonString); var users = new List <User>(); foreach (var dto in dtos) { if (!IsValid(dto) || !dto.Cards.All(IsValid)) { sb.AppendLine("Invalid Data"); continue; } foreach (var card in dto.Cards) { var cardType = Enum.TryParse <CardType>(card.Type, out CardType result); if (!cardType) { sb.AppendLine("Invalid Data"); break; } } var user = new User { FullName = dto.FullName, Username = dto.Username, Email = dto.Email, Age = dto.Age }; foreach (var card in dto.Cards) { user.Cards.Add(new Card { Number = card.Number, Cvc = card.Cvc, Type = Enum.Parse <CardType>(card.Type) }); } sb.AppendLine($"Imported {user.Username} with {user.Cards.Count} cards"); users.Add(user); } context.AddRange(users); context.SaveChanges(); return(sb.ToString().TrimEnd()); }
public static string ImportGames(VaporStoreDbContext context, string jsonString) { StringBuilder sb = new StringBuilder(); var games = new List <Game>(); var gamesDto = JsonConvert.DeserializeObject <ImportGameDto[]>(jsonString); foreach (var gameDto in gamesDto) { if (!IsValid(gameDto) || gameDto.Tags.Count == 0) { sb.AppendLine("Invalid Data"); continue; } var game = new Game() { Name = gameDto.Name, Price = gameDto.Price, ReleaseDate = DateTime.ParseExact(gameDto.ReleaseDate, "yyyy-MM-dd", CultureInfo.InvariantCulture) }; var developer = GetDevelopoer(context, gameDto.Developer); var genre = GetGenre(context, gameDto.Genre); game.Developer = developer; game.Genre = genre; foreach (var currentTag in gameDto.Tags) { var tag = GetTag(context, currentTag); game.GameTags.Add(new GameTag() { Game = game, Tag = tag }); } games.Add(game); sb.AppendLine($"Added {game.Name} ({game.Genre.Name}) with {game.GameTags.Count} tags"); } context.AddRange(games); context.SaveChanges(); return(sb.ToString().TrimEnd()); }
public static string ImportUsers(VaporStoreDbContext context, string jsonString) { var userDtos = JsonConvert.DeserializeObject <ImportUserDto[]>(jsonString); StringBuilder sb = new StringBuilder(); var users = new List <User>(); foreach (var userDto in userDtos) { if (!IsValid(userDto)) { sb.AppendLine(ErrorMessage); continue; } var userCards = new List <Card>(); foreach (var card in userDto.Cards) { if (!IsValid(card)) { sb.AppendLine(ErrorMessage); continue; } userCards.Add(card); } var user = new User() { FullName = userDto.FullName, Username = userDto.Username, Email = userDto.Email, Age = userDto.Age, Cards = userCards }; users.Add(user); sb.AppendLine(String.Format(ImportedUser, user.Username, userCards.Count)); } context.AddRange(users); context.SaveChanges(); return(sb.ToString().TrimEnd()); }
public static string ImportPurchases(VaporStoreDbContext context, string xmlString) { StringBuilder sb = new StringBuilder(); XmlSerializer xs = new XmlSerializer(typeof(ImportParchaseDto[]), new XmlRootAttribute("Purchases")); var purchases = (ImportParchaseDto[])xs.Deserialize(new StringReader(xmlString)); ; var validPurchases = new List <Purchase>(); foreach (var pur in purchases) { var card = context.Cards.FirstOrDefault(x => x.Number == pur.CardNumber); var game = context.Games.FirstOrDefault(x => x.Name == pur.GameName); if (!IsValid(pur) || card == null || game == null) { sb.AppendLine("Invalid Data"); continue; } var cardOwner = context.Cards .Where(x => x.Number == pur.CardNumber) .Select(x => new { x.User.Username }) .First(); var purchase = new Purchase() { Type = pur.Type, ProductKey = pur.ProductKey, Date = DateTime.ParseExact(pur.Date, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture), Card = card, Game = game }; validPurchases.Add(purchase); sb.AppendLine($"Imported {game.Name} for {cardOwner.Username}"); } context.AddRange(validPurchases); context.SaveChanges(); ; return(sb.ToString().TrimEnd()); }
public static string ImportPurchases(VaporStoreDbContext context, string xmlString) { var att = new XmlRootAttribute("Purchases"); var serializer = new XmlSerializer(typeof(ImportPurchasesDTO[]), att); var purchasesDTO = (ImportPurchasesDTO[])serializer.Deserialize(new StringReader(xmlString)); var games = context.Games.ToHashSet(); var cards = context.Cards .Include(c => c.User) .ToHashSet(); var sb = new StringBuilder(); var purchases = new List <Purchase>(); foreach (var purchaseDTO in purchasesDTO) { var game = games.FirstOrDefault(g => g.Name == purchaseDTO.Title); var card = cards.FirstOrDefault(c => c.Number == purchaseDTO.Card); bool isValidPurchase = IsValid(purchaseDTO) && game != null && card != null; if (!isValidPurchase) { sb.AppendLine("Invalid Data"); continue; } var purchase = new Purchase { Type = purchaseDTO.Type, ProductKey = purchaseDTO.Key, Date = DateTime.ParseExact(purchaseDTO.Date, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture), Card = card, Game = game }; purchases.Add(purchase); sb.AppendLine($"Imported {purchaseDTO.Title} for {card.User.Username}"); } context.AddRange(purchases); context.SaveChanges(); return(sb.ToString().TrimEnd()); }
private static void SeedDatabase(VaporStoreDbContext context) { var datasetsJson = "{\"Game\":[{\"Id\":1,\"Name\":\"Dota 2\",\"Price\":0.00,\"ReleaseDate\":\"2013-07-09T00:00:00\",\"DeveloperId\":1,\"GenreId\":1},{\"Id\":2,\"Name\":\"Factorio\",\"Price\":25.00,\"ReleaseDate\":\"2016-02-25T00:00:00\",\"DeveloperId\":45,\"GenreId\":12},{\"Id\":3,\"Name\":\"Yu-Gi-Oh! Duel Links\",\"Price\":0.00,\"ReleaseDate\":\"2017-11-16T00:00:00\",\"DeveloperId\":25,\"GenreId\":8},{\"Id\":4,\"Name\":\"Trove\",\"Price\":0.00,\"ReleaseDate\":\"2015-07-09T00:00:00\",\"DeveloperId\":35,\"GenreId\":1},{\"Id\":5,\"Name\":\"Shining Resonance Refrain\",\"Price\":49.99,\"ReleaseDate\":\"2018-07-09T00:00:00\",\"DeveloperId\":24,\"GenreId\":9},{\"Id\":6,\"Name\":\"Wreckfest\",\"Price\":44.99,\"ReleaseDate\":\"2018-06-14T00:00:00\",\"DeveloperId\":11,\"GenreId\":1},{\"Id\":7,\"Name\":\"Terraria\",\"Price\":9.99,\"ReleaseDate\":\"2011-05-16T00:00:00\",\"DeveloperId\":2,\"GenreId\":1},{\"Id\":8,\"Name\":\"Frostpunk\",\"Price\":29.99,\"ReleaseDate\":\"2018-04-24T00:00:00\",\"DeveloperId\":44,\"GenreId\":7},{\"Id\":9,\"Name\":\"NBA 2K18\",\"Price\":49.99,\"ReleaseDate\":\"2017-09-14T00:00:00\",\"DeveloperId\":3,\"GenreId\":7},{\"Id\":10,\"Name\":\"ARK: Survival Evolved\",\"Price\":89.00,\"ReleaseDate\":\"2017-08-29T00:00:00\",\"DeveloperId\":5,\"GenreId\":1},{\"Id\":11,\"Name\":\"Total War: WARHAMMER II\",\"Price\":59.99,\"ReleaseDate\":\"2017-09-28T00:00:00\",\"DeveloperId\":6,\"GenreId\":1},{\"Id\":12,\"Name\":\"Garry's Mod\",\"Price\":9.99,\"ReleaseDate\":\"2006-11-29T00:00:00\",\"DeveloperId\":7,\"GenreId\":11},{\"Id\":13,\"Name\":\"Rust\",\"Price\":31.99,\"ReleaseDate\":\"2018-02-08T00:00:00\",\"DeveloperId\":7,\"GenreId\":6},{\"Id\":14,\"Name\":\"World of Warships\",\"Price\":0.00,\"ReleaseDate\":\"2017-11-15T00:00:00\",\"DeveloperId\":8,\"GenreId\":1},{\"Id\":15,\"Name\":\"Kingdom Come: Deliverance\",\"Price\":49.99,\"ReleaseDate\":\"2018-02-13T00:00:00\",\"DeveloperId\":9,\"GenreId\":1},{\"Id\":16,\"Name\":\"Dig or Die\",\"Price\":11.99,\"ReleaseDate\":\"2018-07-10T00:00:00\",\"DeveloperId\":4,\"GenreId\":1},{\"Id\":17,\"Name\":\"Slay the Spire\",\"Price\":15.99,\"ReleaseDate\":\"2017-11-14T00:00:00\",\"DeveloperId\":43,\"GenreId\":11},{\"Id\":18,\"Name\":\"Beat Saber\",\"Price\":19.99,\"ReleaseDate\":\"2018-05-01T00:00:00\",\"DeveloperId\":42,\"GenreId\":11},{\"Id\":19,\"Name\":\"Bridge Constructor Portal\",\"Price\":9.99,\"ReleaseDate\":\"2017-12-20T00:00:00\",\"DeveloperId\":41,\"GenreId\":7},{\"Id\":20,\"Name\":\"Pro Cycling Manager 2018\",\"Price\":39.99,\"ReleaseDate\":\"2018-06-28T00:00:00\",\"DeveloperId\":26,\"GenreId\":7},{\"Id\":21,\"Name\":\"Dungeon Warfare 2\",\"Price\":12.49,\"ReleaseDate\":\"2018-07-06T00:00:00\",\"DeveloperId\":27,\"GenreId\":11},{\"Id\":22,\"Name\":\"Soul at Stake\",\"Price\":14.99,\"ReleaseDate\":\"2018-06-25T00:00:00\",\"DeveloperId\":28,\"GenreId\":4},{\"Id\":23,\"Name\":\"Arma 3\",\"Price\":34.99,\"ReleaseDate\":\"2013-09-12T00:00:00\",\"DeveloperId\":29,\"GenreId\":1},{\"Id\":24,\"Name\":\"Tom Clancy's Ghost Recon Wildlands\",\"Price\":59.99,\"ReleaseDate\":\"2017-03-06T00:00:00\",\"DeveloperId\":30,\"GenreId\":1},{\"Id\":25,\"Name\":\"Neverwinter\",\"Price\":0.00,\"ReleaseDate\":\"2013-12-05T00:00:00\",\"DeveloperId\":31,\"GenreId\":9},{\"Id\":26,\"Name\":\"Squad\",\"Price\":36.99,\"ReleaseDate\":\"2015-12-14T00:00:00\",\"DeveloperId\":32,\"GenreId\":1},{\"Id\":27,\"Name\":\"Vampyr\",\"Price\":49.99,\"ReleaseDate\":\"2018-06-04T00:00:00\",\"DeveloperId\":33,\"GenreId\":1},{\"Id\":28,\"Name\":\"Brawlhalla\",\"Price\":0.00,\"ReleaseDate\":\"2017-10-17T00:00:00\",\"DeveloperId\":34,\"GenreId\":1},{\"Id\":29,\"Name\":\"Conan Exiles\",\"Price\":39.99,\"ReleaseDate\":\"2018-05-08T00:00:00\",\"DeveloperId\":36,\"GenreId\":6},{\"Id\":30,\"Name\":\"Call of Duty: Black Ops III\",\"Price\":59.99,\"ReleaseDate\":\"2015-11-05T00:00:00\",\"DeveloperId\":46,\"GenreId\":1},{\"Id\":31,\"Name\":\"Human: Fall Flat\",\"Price\":14.99,\"ReleaseDate\":\"2016-07-22T00:00:00\",\"DeveloperId\":37,\"GenreId\":9},{\"Id\":32,\"Name\":\"Guns, Gore and Cannoli 2\",\"Price\":12.99,\"ReleaseDate\":\"2018-03-02T00:00:00\",\"DeveloperId\":38,\"GenreId\":1},{\"Id\":33,\"Name\":\"DARK SOULS: REMASTERED\",\"Price\":39.99,\"ReleaseDate\":\"2018-05-23T00:00:00\",\"DeveloperId\":39,\"GenreId\":1},{\"Id\":34,\"Name\":\"The Elder Scrolls V: Skyrim Special Edition\",\"Price\":39.99,\"ReleaseDate\":\"2016-10-27T00:00:00\",\"DeveloperId\":40,\"GenreId\":2},{\"Id\":35,\"Name\":\"Subnautica\",\"Price\":22.99,\"ReleaseDate\":\"2018-01-23T00:00:00\",\"DeveloperId\":10,\"GenreId\":9},{\"Id\":36,\"Name\":\"FINAL FANTASY XIV Online\",\"Price\":9.99,\"ReleaseDate\":\"2014-02-18T00:00:00\",\"DeveloperId\":12,\"GenreId\":3},{\"Id\":37,\"Name\":\"Darksiders III\",\"Price\":59.99,\"ReleaseDate\":\"2018-11-27T00:00:00\",\"DeveloperId\":22,\"GenreId\":4},{\"Id\":38,\"Name\":\"Warface\",\"Price\":0.00,\"ReleaseDate\":\"2014-07-01T00:00:00\",\"DeveloperId\":13,\"GenreId\":1},{\"Id\":39,\"Name\":\"NARUTO SHIPPUDEN: Ultimate Ninja STORM 4\",\"Price\":29.99,\"ReleaseDate\":\"2016-02-04T00:00:00\",\"DeveloperId\":59,\"GenreId\":1},{\"Id\":40,\"Name\":\"Black Desert Online\",\"Price\":9.99,\"ReleaseDate\":\"2017-05-24T00:00:00\",\"DeveloperId\":58,\"GenreId\":4},{\"Id\":41,\"Name\":\"Warhammer 40,000: Gladius - Relics of War\",\"Price\":37.99,\"ReleaseDate\":\"2018-07-12T00:00:00\",\"DeveloperId\":57,\"GenreId\":5},{\"Id\":42,\"Name\":\"Planet Coaster\",\"Price\":37.99,\"ReleaseDate\":\"2016-11-17T00:00:00\",\"DeveloperId\":56,\"GenreId\":7},{\"Id\":43,\"Name\":\"Jurassic World Evolution\",\"Price\":54.99,\"ReleaseDate\":\"2018-06-11T00:00:00\",\"DeveloperId\":56,\"GenreId\":4},{\"Id\":44,\"Name\":\"Grand Theft Auto V\",\"Price\":29.99,\"ReleaseDate\":\"2015-04-13T00:00:00\",\"DeveloperId\":60,\"GenreId\":1},{\"Id\":45,\"Name\":\"Rocket League\",\"Price\":12.59,\"ReleaseDate\":\"2015-07-07T00:00:00\",\"DeveloperId\":54,\"GenreId\":1},{\"Id\":46,\"Name\":\"Far Cry 5\",\"Price\":59.99,\"ReleaseDate\":\"2018-03-26T00:00:00\",\"DeveloperId\":53,\"GenreId\":1},{\"Id\":47,\"Name\":\"FOR HONOR\",\"Price\":14.99,\"ReleaseDate\":\"2017-02-13T00:00:00\",\"DeveloperId\":53,\"GenreId\":1},{\"Id\":48,\"Name\":\"Tom Clancy's Rainbow Six Siege\",\"Price\":14.99,\"ReleaseDate\":\"2015-12-01T00:00:00\",\"DeveloperId\":53,\"GenreId\":1},{\"Id\":49,\"Name\":\"Warframe\",\"Price\":0.00,\"ReleaseDate\":\"2013-03-25T00:00:00\",\"DeveloperId\":52,\"GenreId\":4},{\"Id\":50,\"Name\":\"PLAYERUNKNOWN'S BATTLEGROUNDS\",\"Price\":29.99,\"ReleaseDate\":\"2017-12-21T00:00:00\",\"DeveloperId\":51,\"GenreId\":4},{\"Id\":51,\"Name\":\"MONSTER HUNTER: WORLD\",\"Price\":59.99,\"ReleaseDate\":\"2018-08-09T00:00:00\",\"DeveloperId\":50,\"GenreId\":1},{\"Id\":52,\"Name\":\"Team Fortress 2\",\"Price\":0.00,\"ReleaseDate\":\"2007-10-10T00:00:00\",\"DeveloperId\":1,\"GenreId\":1},{\"Id\":53,\"Name\":\"Counter-Strike: Global Offensive\",\"Price\":12.49,\"ReleaseDate\":\"2012-08-21T00:00:00\",\"DeveloperId\":1,\"GenreId\":1},{\"Id\":54,\"Name\":\"Path of Exile\",\"Price\":0.00,\"ReleaseDate\":\"2013-10-23T00:00:00\",\"DeveloperId\":65,\"GenreId\":6},{\"Id\":55,\"Name\":\"Rules Of Survival\",\"Price\":2.39,\"ReleaseDate\":\"2018-05-30T00:00:00\",\"DeveloperId\":19,\"GenreId\":1},{\"Id\":56,\"Name\":\"Banished\",\"Price\":18.99,\"ReleaseDate\":\"2014-02-18T00:00:00\",\"DeveloperId\":64,\"GenreId\":11},{\"Id\":57,\"Name\":\"War Thunder\",\"Price\":0.00,\"ReleaseDate\":\"2013-08-15T00:00:00\",\"DeveloperId\":63,\"GenreId\":1},{\"Id\":58,\"Name\":\"Hunt Showdown\",\"Price\":29.99,\"ReleaseDate\":\"2018-02-22T00:00:00\",\"DeveloperId\":13,\"GenreId\":4},{\"Id\":59,\"Name\":\"Divinity: Original Sin 2\",\"Price\":44.99,\"ReleaseDate\":\"2017-09-14T00:00:00\",\"DeveloperId\":14,\"GenreId\":9},{\"Id\":60,\"Name\":\"Touhou: Scarlet Curiosity\",\"Price\":14.99,\"ReleaseDate\":\"2018-07-11T00:00:00\",\"DeveloperId\":15,\"GenreId\":1},{\"Id\":61,\"Name\":\"Shadowverse CCG\",\"Price\":0.00,\"ReleaseDate\":\"2016-10-27T00:00:00\",\"DeveloperId\":16,\"GenreId\":8},{\"Id\":62,\"Name\":\"RimWorld\",\"Price\":27.99,\"ReleaseDate\":\"2016-07-15T00:00:00\",\"DeveloperId\":17,\"GenreId\":11},{\"Id\":63,\"Name\":\"Crash Bandicoot N. Sane Trilogy\",\"Price\":39.99,\"ReleaseDate\":\"2018-06-29T00:00:00\",\"DeveloperId\":18,\"GenreId\":1},{\"Id\":64,\"Name\":\"SMITE\",\"Price\":0.00,\"ReleaseDate\":\"2015-09-08T00:00:00\",\"DeveloperId\":48,\"GenreId\":1},{\"Id\":65,\"Name\":\"Paladins\",\"Price\":0.00,\"ReleaseDate\":\"2018-05-08T00:00:00\",\"DeveloperId\":48,\"GenreId\":1},{\"Id\":66,\"Name\":\"Seeking Dawn\",\"Price\":33.99,\"ReleaseDate\":\"2018-07-12T00:00:00\",\"DeveloperId\":20,\"GenreId\":4},{\"Id\":67,\"Name\":\"Stardew Valley\",\"Price\":13.99,\"ReleaseDate\":\"2016-02-26T00:00:00\",\"DeveloperId\":21,\"GenreId\":11},{\"Id\":68,\"Name\":\"House Flipper\",\"Price\":16.79,\"ReleaseDate\":\"2018-05-17T00:00:00\",\"DeveloperId\":23,\"GenreId\":11},{\"Id\":69,\"Name\":\"The Forest\",\"Price\":16.79,\"ReleaseDate\":\"2018-04-30T00:00:00\",\"DeveloperId\":47,\"GenreId\":1},{\"Id\":70,\"Name\":\"The Crew 2\",\"Price\":59.99,\"ReleaseDate\":\"2018-06-28T00:00:00\",\"DeveloperId\":55,\"GenreId\":1},{\"Id\":71,\"Name\":\"Dead by Daylight\",\"Price\":19.99,\"ReleaseDate\":\"2016-06-14T00:00:00\",\"DeveloperId\":49,\"GenreId\":4},{\"Id\":72,\"Name\":\"Football Manager 2018\",\"Price\":54.99,\"ReleaseDate\":\"2017-11-09T00:00:00\",\"DeveloperId\":62,\"GenreId\":7},{\"Id\":73,\"Name\":\"Raft\",\"Price\":19.99,\"ReleaseDate\":\"2018-05-23T00:00:00\",\"DeveloperId\":61,\"GenreId\":10},{\"Id\":74,\"Name\":\"The Witcher 3: Wild Hunt\",\"Price\":29.99,\"ReleaseDate\":\"2015-05-18T00:00:00\",\"DeveloperId\":66,\"GenreId\":6}],\"Developer\":[{\"Id\":44,\"Name\":\"11 bit studios\"},{\"Id\":15,\"Name\":\"Ankake Spa\"},{\"Id\":42,\"Name\":\"Beat Games\"},{\"Id\":49,\"Name\":\"Behaviour Digital Inc.\"},{\"Id\":40,\"Name\":\"Bethesda Game Studios\"},{\"Id\":34,\"Name\":\"Blue Mammoth Games\"},{\"Id\":29,\"Name\":\"Bohemia Interactive\"},{\"Id\":11,\"Name\":\"Bugbear\"},{\"Id\":50,\"Name\":\"CAPCOM Co., Ltd.\"},{\"Id\":66,\"Name\":\"CD PROJEKT RED\"},{\"Id\":28,\"Name\":\"Chongming Studio\"},{\"Id\":41,\"Name\":\"ClockStone\"},{\"Id\":21,\"Name\":\"ConcernedApe\"},{\"Id\":38,\"Name\":\"Crazy Monkey Studios\"},{\"Id\":6,\"Name\":\"CREATIVE ASSEMBLY\"},{\"Id\":31,\"Name\":\"Cryptic Studios\"},{\"Id\":13,\"Name\":\"Crytek\"},{\"Id\":26,\"Name\":\"Cyanide Studio\"},{\"Id\":59,\"Name\":\"CyberConnect2 Co. Ltd.\"},{\"Id\":16,\"Name\":\"Cygames, Inc.\"},{\"Id\":52,\"Name\":\"Digital Extremes\"},{\"Id\":33,\"Name\":\"DONTNOD Entertainment\"},{\"Id\":23,\"Name\":\"Empyrean\"},{\"Id\":47,\"Name\":\"Endnight Games Ltd\"},{\"Id\":7,\"Name\":\"Facepunch Studios\"},{\"Id\":56,\"Name\":\"Frontier Developments\"},{\"Id\":36,\"Name\":\"Funcom\"},{\"Id\":4,\"Name\":\"Gaddy Games\"},{\"Id\":63,\"Name\":\"Gaijin Entertainment\"},{\"Id\":65,\"Name\":\"Grinding Gear Games\"},{\"Id\":22,\"Name\":\"Gunfire Games\"},{\"Id\":48,\"Name\":\"Hi-Rez Studios\"},{\"Id\":55,\"Name\":\"Ivory Tower\"},{\"Id\":25,\"Name\":\"Konami Digital Entertainment\"},{\"Id\":14,\"Name\":\"Larian Studios\"},{\"Id\":17,\"Name\":\"Ludeon Studios\"},{\"Id\":43,\"Name\":\"Mega Crit Games\"},{\"Id\":20,\"Name\":\"Multiverse\"},{\"Id\":19,\"Name\":\"Netease Games\"},{\"Id\":37,\"Name\":\"No Brakes Games\"},{\"Id\":32,\"Name\":\"Offworld Industries\"},{\"Id\":58,\"Name\":\"Pearl Abyss\"},{\"Id\":57,\"Name\":\"Proxy Studios\"},{\"Id\":54,\"Name\":\"Psyonix, Inc.\"},{\"Id\":51,\"Name\":\"PUBG Corporation\"},{\"Id\":39,\"Name\":\"QLOC\"},{\"Id\":61,\"Name\":\"Redbeet Interactive\"},{\"Id\":2,\"Name\":\"Re-Logic\"},{\"Id\":60,\"Name\":\"Rockstar North\"},{\"Id\":24,\"Name\":\"SEGA\"},{\"Id\":64,\"Name\":\"Shining Rock Software LLC\"},{\"Id\":62,\"Name\":\"Sports Interactive\"},{\"Id\":12,\"Name\":\"Square Enix\"},{\"Id\":5,\"Name\":\"Studio Wildcard\"},{\"Id\":46,\"Name\":\"Treyarch\"},{\"Id\":35,\"Name\":\"Trion Worlds\"},{\"Id\":53,\"Name\":\"Ubisoft Montreal\"},{\"Id\":30,\"Name\":\"Ubisoft Paris\"},{\"Id\":10,\"Name\":\"Unknown Worlds Entertainment\"},{\"Id\":27,\"Name\":\"Valsar\"},{\"Id\":1,\"Name\":\"Valve\"},{\"Id\":18,\"Name\":\"Vicarious Visions\"},{\"Id\":3,\"Name\":\"Visual Concepts\"},{\"Id\":8,\"Name\":\"Wargaming Group Limited\"},{\"Id\":9,\"Name\":\"Warhorse Studios\"},{\"Id\":45,\"Name\":\"Wube Software LTD.\"}],\"Genre\":[{\"Id\":1,\"Name\":\"Action\"},{\"Id\":9,\"Name\":\"Adventure\"},{\"Id\":12,\"Name\":\"Casual\"},{\"Id\":8,\"Name\":\"Free to Play\"},{\"Id\":11,\"Name\":\"Indie\"},{\"Id\":3,\"Name\":\"Massively Multiplayer\"},{\"Id\":6,\"Name\":\"Nudity\"},{\"Id\":2,\"Name\":\"RPG\"},{\"Id\":7,\"Name\":\"Simulation\"},{\"Id\":10,\"Name\":\"Single-player\"},{\"Id\":5,\"Name\":\"Strategy\"},{\"Id\":4,\"Name\":\"Violent\"}],\"Tag\":[{\"Id\":23,\"Name\":\"Captions available\"},{\"Id\":20,\"Name\":\"Commentary available\"},{\"Id\":8,\"Name\":\"Co-op\"},{\"Id\":18,\"Name\":\"Cross-Platform Multiplayer\"},{\"Id\":15,\"Name\":\"Full controller support\"},{\"Id\":5,\"Name\":\"In-App Purchases\"},{\"Id\":14,\"Name\":\"Includes level editor\"},{\"Id\":25,\"Name\":\"Local Co-op\"},{\"Id\":16,\"Name\":\"Local Multi-Player\"},{\"Id\":22,\"Name\":\"MMO\"},{\"Id\":9,\"Name\":\"Multi-player\"},{\"Id\":21,\"Name\":\"Online Co-op\"},{\"Id\":12,\"Name\":\"Online Multi-Player\"},{\"Id\":24,\"Name\":\"Partial Controller Support\"},{\"Id\":17,\"Name\":\"Shared/Split Screen\"},{\"Id\":2,\"Name\":\"Single-player\"},{\"Id\":13,\"Name\":\"Stats\"},{\"Id\":11,\"Name\":\"Steam Achievements\"},{\"Id\":19,\"Name\":\"Steam Cloud\"},{\"Id\":3,\"Name\":\"Steam Leaderboards\"},{\"Id\":7,\"Name\":\"Steam Trading Cards\"},{\"Id\":6,\"Name\":\"Steam Workshop\"},{\"Id\":4,\"Name\":\"SteamVR Collectibles\"},{\"Id\":10,\"Name\":\"Valve Anti-Cheat enabled\"},{\"Id\":1,\"Name\":\"VR Support\"}],\"GameTag\":[{\"GameId\":10,\"TagId\":1},{\"GameId\":35,\"TagId\":1},{\"GameId\":2,\"TagId\":2},{\"GameId\":3,\"TagId\":2},{\"GameId\":5,\"TagId\":2},{\"GameId\":6,\"TagId\":2},{\"GameId\":7,\"TagId\":2},{\"GameId\":8,\"TagId\":2},{\"GameId\":9,\"TagId\":2},{\"GameId\":10,\"TagId\":2},{\"GameId\":11,\"TagId\":2},{\"GameId\":12,\"TagId\":2},{\"GameId\":15,\"TagId\":2},{\"GameId\":16,\"TagId\":2},{\"GameId\":17,\"TagId\":2},{\"GameId\":18,\"TagId\":2},{\"GameId\":19,\"TagId\":2},{\"GameId\":20,\"TagId\":2},{\"GameId\":21,\"TagId\":2},{\"GameId\":23,\"TagId\":2},{\"GameId\":24,\"TagId\":2},{\"GameId\":27,\"TagId\":2},{\"GameId\":28,\"TagId\":2},{\"GameId\":29,\"TagId\":2},{\"GameId\":30,\"TagId\":2},{\"GameId\":31,\"TagId\":2},{\"GameId\":32,\"TagId\":2},{\"GameId\":33,\"TagId\":2},{\"GameId\":34,\"TagId\":2},{\"GameId\":35,\"TagId\":2},{\"GameId\":36,\"TagId\":2},{\"GameId\":37,\"TagId\":2},{\"GameId\":39,\"TagId\":2},{\"GameId\":41,\"TagId\":2},{\"GameId\":42,\"TagId\":2},{\"GameId\":43,\"TagId\":2},{\"GameId\":44,\"TagId\":2},{\"GameId\":45,\"TagId\":2},{\"GameId\":46,\"TagId\":2},{\"GameId\":47,\"TagId\":2},{\"GameId\":48,\"TagId\":2},{\"GameId\":49,\"TagId\":2},{\"GameId\":51,\"TagId\":2},{\"GameId\":54,\"TagId\":2},{\"GameId\":56,\"TagId\":2},{\"GameId\":57,\"TagId\":2},{\"GameId\":59,\"TagId\":2},{\"GameId\":60,\"TagId\":2},{\"GameId\":61,\"TagId\":2},{\"GameId\":62,\"TagId\":2},{\"GameId\":63,\"TagId\":2},{\"GameId\":66,\"TagId\":2},{\"GameId\":67,\"TagId\":2},{\"GameId\":68,\"TagId\":2},{\"GameId\":69,\"TagId\":2},{\"GameId\":70,\"TagId\":2},{\"GameId\":72,\"TagId\":2},{\"GameId\":73,\"TagId\":2},{\"GameId\":74,\"TagId\":2},{\"GameId\":6,\"TagId\":3},{\"GameId\":17,\"TagId\":3},{\"GameId\":18,\"TagId\":3},{\"GameId\":23,\"TagId\":3},{\"GameId\":30,\"TagId\":3},{\"GameId\":39,\"TagId\":3},{\"GameId\":72,\"TagId\":3},{\"GameId\":1,\"TagId\":4},{\"GameId\":1,\"TagId\":5},{\"GameId\":3,\"TagId\":5},{\"GameId\":4,\"TagId\":5},{\"GameId\":13,\"TagId\":5},{\"GameId\":14,\"TagId\":5},{\"GameId\":24,\"TagId\":5},{\"GameId\":25,\"TagId\":5},{\"GameId\":38,\"TagId\":5},{\"GameId\":40,\"TagId\":5},{\"GameId\":46,\"TagId\":5},{\"GameId\":47,\"TagId\":5},{\"GameId\":48,\"TagId\":5},{\"GameId\":49,\"TagId\":5},{\"GameId\":52,\"TagId\":5},{\"GameId\":53,\"TagId\":5},{\"GameId\":54,\"TagId\":5},{\"GameId\":55,\"TagId\":5},{\"GameId\":57,\"TagId\":5},{\"GameId\":61,\"TagId\":5},{\"GameId\":65,\"TagId\":5},{\"GameId\":70,\"TagId\":5},{\"GameId\":1,\"TagId\":6},{\"GameId\":4,\"TagId\":6},{\"GameId\":6,\"TagId\":6},{\"GameId\":10,\"TagId\":6},{\"GameId\":12,\"TagId\":6},{\"GameId\":13,\"TagId\":6},{\"GameId\":20,\"TagId\":6},{\"GameId\":21,\"TagId\":6},{\"GameId\":23,\"TagId\":6},{\"GameId\":29,\"TagId\":6},{\"GameId\":30,\"TagId\":6},{\"GameId\":42,\"TagId\":6},{\"GameId\":45,\"TagId\":6},{\"GameId\":52,\"TagId\":6},{\"GameId\":53,\"TagId\":6},{\"GameId\":59,\"TagId\":6},{\"GameId\":62,\"TagId\":6},{\"GameId\":72,\"TagId\":6},{\"GameId\":1,\"TagId\":7},{\"GameId\":3,\"TagId\":7},{\"GameId\":4,\"TagId\":7},{\"GameId\":5,\"TagId\":7},{\"GameId\":7,\"TagId\":7},{\"GameId\":8,\"TagId\":7},{\"GameId\":11,\"TagId\":7},{\"GameId\":12,\"TagId\":7},{\"GameId\":13,\"TagId\":7},{\"GameId\":15,\"TagId\":7},{\"GameId\":16,\"TagId\":7},{\"GameId\":19,\"TagId\":7},{\"GameId\":20,\"TagId\":7},{\"GameId\":23,\"TagId\":7},{\"GameId\":24,\"TagId\":7},{\"GameId\":25,\"TagId\":7},{\"GameId\":26,\"TagId\":7},{\"GameId\":27,\"TagId\":7},{\"GameId\":28,\"TagId\":7},{\"GameId\":29,\"TagId\":7},{\"GameId\":30,\"TagId\":7},{\"GameId\":31,\"TagId\":7},{\"GameId\":35,\"TagId\":7},{\"GameId\":37,\"TagId\":7},{\"GameId\":38,\"TagId\":7},{\"GameId\":40,\"TagId\":7},{\"GameId\":41,\"TagId\":7},{\"GameId\":42,\"TagId\":7},{\"GameId\":43,\"TagId\":7},{\"GameId\":45,\"TagId\":7},{\"GameId\":47,\"TagId\":7},{\"GameId\":48,\"TagId\":7},{\"GameId\":49,\"TagId\":7},{\"GameId\":52,\"TagId\":7},{\"GameId\":53,\"TagId\":7},{\"GameId\":54,\"TagId\":7},{\"GameId\":59,\"TagId\":7},{\"GameId\":60,\"TagId\":7},{\"GameId\":63,\"TagId\":7},{\"GameId\":64,\"TagId\":7},{\"GameId\":65,\"TagId\":7},{\"GameId\":67,\"TagId\":7},{\"GameId\":68,\"TagId\":7},{\"GameId\":71,\"TagId\":7},{\"GameId\":74,\"TagId\":7},{\"GameId\":1,\"TagId\":8},{\"GameId\":4,\"TagId\":8},{\"GameId\":7,\"TagId\":8},{\"GameId\":10,\"TagId\":8},{\"GameId\":12,\"TagId\":8},{\"GameId\":13,\"TagId\":8},{\"GameId\":14,\"TagId\":8},{\"GameId\":16,\"TagId\":8},{\"GameId\":22,\"TagId\":8},{\"GameId\":23,\"TagId\":8},{\"GameId\":24,\"TagId\":8},{\"GameId\":25,\"TagId\":8},{\"GameId\":28,\"TagId\":8},{\"GameId\":29,\"TagId\":8},{\"GameId\":30,\"TagId\":8},{\"GameId\":32,\"TagId\":8},{\"GameId\":36,\"TagId\":8},{\"GameId\":38,\"TagId\":8},{\"GameId\":41,\"TagId\":8},{\"GameId\":45,\"TagId\":8},{\"GameId\":46,\"TagId\":8},{\"GameId\":48,\"TagId\":8},{\"GameId\":49,\"TagId\":8},{\"GameId\":51,\"TagId\":8},{\"GameId\":54,\"TagId\":8},{\"GameId\":57,\"TagId\":8},{\"GameId\":59,\"TagId\":8},{\"GameId\":66,\"TagId\":8},{\"GameId\":69,\"TagId\":8},{\"GameId\":71,\"TagId\":8},{\"GameId\":1,\"TagId\":9},{\"GameId\":2,\"TagId\":9},{\"GameId\":6,\"TagId\":9},{\"GameId\":7,\"TagId\":9},{\"GameId\":9,\"TagId\":9},{\"GameId\":10,\"TagId\":9},{\"GameId\":11,\"TagId\":9},{\"GameId\":12,\"TagId\":9},{\"GameId\":13,\"TagId\":9},{\"GameId\":14,\"TagId\":9},{\"GameId\":16,\"TagId\":9},{\"GameId\":22,\"TagId\":9},{\"GameId\":23,\"TagId\":9},{\"GameId\":24,\"TagId\":9},{\"GameId\":25,\"TagId\":9},{\"GameId\":26,\"TagId\":9},{\"GameId\":28,\"TagId\":9},{\"GameId\":29,\"TagId\":9},{\"GameId\":30,\"TagId\":9},{\"GameId\":33,\"TagId\":9},{\"GameId\":36,\"TagId\":9},{\"GameId\":38,\"TagId\":9},{\"GameId\":39,\"TagId\":9},{\"GameId\":41,\"TagId\":9},{\"GameId\":44,\"TagId\":9},{\"GameId\":45,\"TagId\":9},{\"GameId\":46,\"TagId\":9},{\"GameId\":48,\"TagId\":9},{\"GameId\":49,\"TagId\":9},{\"GameId\":50,\"TagId\":9},{\"GameId\":51,\"TagId\":9},{\"GameId\":52,\"TagId\":9},{\"GameId\":53,\"TagId\":9},{\"GameId\":54,\"TagId\":9},{\"GameId\":59,\"TagId\":9},{\"GameId\":61,\"TagId\":9},{\"GameId\":64,\"TagId\":9},{\"GameId\":65,\"TagId\":9},{\"GameId\":66,\"TagId\":9},{\"GameId\":69,\"TagId\":9},{\"GameId\":71,\"TagId\":9},{\"GameId\":72,\"TagId\":9},{\"GameId\":1,\"TagId\":10},{\"GameId\":10,\"TagId\":10},{\"GameId\":12,\"TagId\":10},{\"GameId\":13,\"TagId\":10},{\"GameId\":26,\"TagId\":10},{\"GameId\":30,\"TagId\":10},{\"GameId\":52,\"TagId\":10},{\"GameId\":53,\"TagId\":10},{\"GameId\":2,\"TagId\":11},{\"GameId\":3,\"TagId\":11},{\"GameId\":4,\"TagId\":11},{\"GameId\":5,\"TagId\":11},{\"GameId\":7,\"TagId\":11},{\"GameId\":8,\"TagId\":11},{\"GameId\":9,\"TagId\":11},{\"GameId\":10,\"TagId\":11},{\"GameId\":11,\"TagId\":11},{\"GameId\":12,\"TagId\":11},{\"GameId\":13,\"TagId\":11},{\"GameId\":14,\"TagId\":11},{\"GameId\":15,\"TagId\":11},{\"GameId\":16,\"TagId\":11},{\"GameId\":17,\"TagId\":11},{\"GameId\":19,\"TagId\":11},{\"GameId\":20,\"TagId\":11},{\"GameId\":21,\"TagId\":11},{\"GameId\":23,\"TagId\":11},{\"GameId\":27,\"TagId\":11},{\"GameId\":28,\"TagId\":11},{\"GameId\":29,\"TagId\":11},{\"GameId\":30,\"TagId\":11},{\"GameId\":31,\"TagId\":11},{\"GameId\":32,\"TagId\":11},{\"GameId\":33,\"TagId\":11},{\"GameId\":34,\"TagId\":11},{\"GameId\":35,\"TagId\":11},{\"GameId\":37,\"TagId\":11},{\"GameId\":38,\"TagId\":11},{\"GameId\":39,\"TagId\":11},{\"GameId\":42,\"TagId\":11},{\"GameId\":43,\"TagId\":11},{\"GameId\":44,\"TagId\":11},{\"GameId\":45,\"TagId\":11},{\"GameId\":51,\"TagId\":11},{\"GameId\":52,\"TagId\":11},{\"GameId\":53,\"TagId\":11},{\"GameId\":54,\"TagId\":11},{\"GameId\":56,\"TagId\":11},{\"GameId\":57,\"TagId\":11},{\"GameId\":59,\"TagId\":11},{\"GameId\":60,\"TagId\":11},{\"GameId\":63,\"TagId\":11},{\"GameId\":64,\"TagId\":11},{\"GameId\":65,\"TagId\":11},{\"GameId\":67,\"TagId\":11},{\"GameId\":68,\"TagId\":11},{\"GameId\":71,\"TagId\":11},{\"GameId\":72,\"TagId\":11},{\"GameId\":73,\"TagId\":11},{\"GameId\":74,\"TagId\":11},{\"GameId\":2,\"TagId\":12},{\"GameId\":3,\"TagId\":12},{\"GameId\":4,\"TagId\":12},{\"GameId\":6,\"TagId\":12},{\"GameId\":7,\"TagId\":12},{\"GameId\":13,\"TagId\":12},{\"GameId\":14,\"TagId\":12},{\"GameId\":16,\"TagId\":12},{\"GameId\":20,\"TagId\":12},{\"GameId\":22,\"TagId\":12},{\"GameId\":23,\"TagId\":12},{\"GameId\":26,\"TagId\":12},{\"GameId\":28,\"TagId\":12},{\"GameId\":29,\"TagId\":12},{\"GameId\":31,\"TagId\":12},{\"GameId\":32,\"TagId\":12},{\"GameId\":36,\"TagId\":12},{\"GameId\":40,\"TagId\":12},{\"GameId\":41,\"TagId\":12},{\"GameId\":47,\"TagId\":12},{\"GameId\":50,\"TagId\":12},{\"GameId\":54,\"TagId\":12},{\"GameId\":55,\"TagId\":12},{\"GameId\":58,\"TagId\":12},{\"GameId\":59,\"TagId\":12},{\"GameId\":61,\"TagId\":12},{\"GameId\":65,\"TagId\":12},{\"GameId\":66,\"TagId\":12},{\"GameId\":70,\"TagId\":12},{\"GameId\":71,\"TagId\":12},{\"GameId\":73,\"TagId\":12},{\"GameId\":6,\"TagId\":13},{\"GameId\":13,\"TagId\":13},{\"GameId\":17,\"TagId\":13},{\"GameId\":31,\"TagId\":13},{\"GameId\":32,\"TagId\":13},{\"GameId\":45,\"TagId\":13},{\"GameId\":50,\"TagId\":13},{\"GameId\":51,\"TagId\":13},{\"GameId\":52,\"TagId\":13},{\"GameId\":53,\"TagId\":13},{\"GameId\":2,\"TagId\":14},{\"GameId\":10,\"TagId\":14},{\"GameId\":12,\"TagId\":14},{\"GameId\":23,\"TagId\":14},{\"GameId\":25,\"TagId\":14},{\"GameId\":46,\"TagId\":14},{\"GameId\":52,\"TagId\":14},{\"GameId\":59,\"TagId\":14},{\"GameId\":5,\"TagId\":15},{\"GameId\":7,\"TagId\":15},{\"GameId\":9,\"TagId\":15},{\"GameId\":10,\"TagId\":15},{\"GameId\":15,\"TagId\":15},{\"GameId\":19,\"TagId\":15},{\"GameId\":27,\"TagId\":15},{\"GameId\":28,\"TagId\":15},{\"GameId\":29,\"TagId\":15},{\"GameId\":30,\"TagId\":15},{\"GameId\":31,\"TagId\":15},{\"GameId\":32,\"TagId\":15},{\"GameId\":33,\"TagId\":15},{\"GameId\":35,\"TagId\":15},{\"GameId\":37,\"TagId\":15},{\"GameId\":39,\"TagId\":15},{\"GameId\":43,\"TagId\":15},{\"GameId\":44,\"TagId\":15},{\"GameId\":45,\"TagId\":15},{\"GameId\":53,\"TagId\":15},{\"GameId\":59,\"TagId\":15},{\"GameId\":71,\"TagId\":15},{\"GameId\":74,\"TagId\":15},{\"GameId\":2,\"TagId\":16},{\"GameId\":23,\"TagId\":16},{\"GameId\":28,\"TagId\":16},{\"GameId\":32,\"TagId\":16},{\"GameId\":59,\"TagId\":16},{\"GameId\":9,\"TagId\":17},{\"GameId\":28,\"TagId\":17},{\"GameId\":31,\"TagId\":17},{\"GameId\":32,\"TagId\":17},{\"GameId\":45,\"TagId\":17},{\"GameId\":59,\"TagId\":17},{\"GameId\":2,\"TagId\":18},{\"GameId\":3,\"TagId\":18},{\"GameId\":12,\"TagId\":18},{\"GameId\":13,\"TagId\":18},{\"GameId\":28,\"TagId\":18},{\"GameId\":32,\"TagId\":18},{\"GameId\":36,\"TagId\":18},{\"GameId\":41,\"TagId\":18},{\"GameId\":45,\"TagId\":18},{\"GameId\":52,\"TagId\":18},{\"GameId\":57,\"TagId\":18},{\"GameId\":61,\"TagId\":18},{\"GameId\":2,\"TagId\":19},{\"GameId\":7,\"TagId\":19},{\"GameId\":8,\"TagId\":19},{\"GameId\":9,\"TagId\":19},{\"GameId\":10,\"TagId\":19},{\"GameId\":12,\"TagId\":19},{\"GameId\":15,\"TagId\":19},{\"GameId\":16,\"TagId\":19},{\"GameId\":17,\"TagId\":19},{\"GameId\":19,\"TagId\":19},{\"GameId\":20,\"TagId\":19},{\"GameId\":21,\"TagId\":19},{\"GameId\":22,\"TagId\":19},{\"GameId\":27,\"TagId\":19},{\"GameId\":31,\"TagId\":19},{\"GameId\":34,\"TagId\":19},{\"GameId\":37,\"TagId\":19},{\"GameId\":39,\"TagId\":19},{\"GameId\":41,\"TagId\":19},{\"GameId\":42,\"TagId\":19},{\"GameId\":43,\"TagId\":19},{\"GameId\":45,\"TagId\":19},{\"GameId\":59,\"TagId\":19},{\"GameId\":60,\"TagId\":19},{\"GameId\":62,\"TagId\":19},{\"GameId\":63,\"TagId\":19},{\"GameId\":67,\"TagId\":19},{\"GameId\":68,\"TagId\":19},{\"GameId\":69,\"TagId\":19},{\"GameId\":71,\"TagId\":19},{\"GameId\":72,\"TagId\":19},{\"GameId\":73,\"TagId\":19},{\"GameId\":74,\"TagId\":19},{\"GameId\":52,\"TagId\":20},{\"GameId\":7,\"TagId\":21},{\"GameId\":13,\"TagId\":21},{\"GameId\":14,\"TagId\":21},{\"GameId\":16,\"TagId\":21},{\"GameId\":22,\"TagId\":21},{\"GameId\":23,\"TagId\":21},{\"GameId\":28,\"TagId\":21},{\"GameId\":29,\"TagId\":21},{\"GameId\":32,\"TagId\":21},{\"GameId\":36,\"TagId\":21},{\"GameId\":40,\"TagId\":21},{\"GameId\":41,\"TagId\":21},{\"GameId\":47,\"TagId\":21},{\"GameId\":58,\"TagId\":21},{\"GameId\":59,\"TagId\":21},{\"GameId\":66,\"TagId\":21},{\"GameId\":70,\"TagId\":21},{\"GameId\":71,\"TagId\":21},{\"GameId\":73,\"TagId\":21},{\"GameId\":4,\"TagId\":22},{\"GameId\":10,\"TagId\":22},{\"GameId\":13,\"TagId\":22},{\"GameId\":14,\"TagId\":22},{\"GameId\":25,\"TagId\":22},{\"GameId\":36,\"TagId\":22},{\"GameId\":38,\"TagId\":22},{\"GameId\":40,\"TagId\":22},{\"GameId\":54,\"TagId\":22},{\"GameId\":57,\"TagId\":22},{\"GameId\":70,\"TagId\":22},{\"GameId\":12,\"TagId\":23},{\"GameId\":23,\"TagId\":23},{\"GameId\":46,\"TagId\":23},{\"GameId\":52,\"TagId\":23},{\"GameId\":59,\"TagId\":23},{\"GameId\":6,\"TagId\":24},{\"GameId\":23,\"TagId\":24},{\"GameId\":24,\"TagId\":24},{\"GameId\":26,\"TagId\":24},{\"GameId\":34,\"TagId\":24},{\"GameId\":36,\"TagId\":24},{\"GameId\":40,\"TagId\":24},{\"GameId\":46,\"TagId\":24},{\"GameId\":47,\"TagId\":24},{\"GameId\":48,\"TagId\":24},{\"GameId\":49,\"TagId\":24},{\"GameId\":51,\"TagId\":24},{\"GameId\":52,\"TagId\":24},{\"GameId\":57,\"TagId\":24},{\"GameId\":60,\"TagId\":24},{\"GameId\":63,\"TagId\":24},{\"GameId\":65,\"TagId\":24},{\"GameId\":67,\"TagId\":24},{\"GameId\":69,\"TagId\":24},{\"GameId\":70,\"TagId\":24},{\"GameId\":23,\"TagId\":25},{\"GameId\":28,\"TagId\":25},{\"GameId\":31,\"TagId\":25},{\"GameId\":32,\"TagId\":25},{\"GameId\":59,\"TagId\":25}],\"User\":[{\"Id\":1,\"Age\":33,\"Email\":\"[email protected]\",\"FullName\":\"Lorrie Silbert\",\"Username\":\"lsilbert\"},{\"Id\":2,\"Age\":25,\"Email\":\"[email protected]\",\"FullName\":\"Kizzie Mertgen\",\"Username\":\"kmertgen\"},{\"Id\":3,\"Age\":29,\"Email\":\"[email protected]\",\"FullName\":\"Skell Vannini\",\"Username\":\"svannini\"},{\"Id\":4,\"Age\":66,\"Email\":\"[email protected]\",\"FullName\":\"Amargo Putland\",\"Username\":\"aputland\"},{\"Id\":5,\"Age\":24,\"Email\":\"[email protected]\",\"FullName\":\"Velvet Sjollema\",\"Username\":\"vsjollema\"},{\"Id\":6,\"Age\":49,\"Email\":\"[email protected]\",\"FullName\":\"Rebbecca Abbison\",\"Username\":\"rabbison\"},{\"Id\":7,\"Age\":47,\"Email\":\"[email protected]\",\"FullName\":\"Bryana Gunston\",\"Username\":\"bgunston\"},{\"Id\":8,\"Age\":76,\"Email\":\"[email protected]\",\"FullName\":\"Brook Graith\",\"Username\":\"bgraith\"},{\"Id\":9,\"Age\":11,\"Email\":\"[email protected]\",\"FullName\":\"Myles Gillicuddy\",\"Username\":\"mgillicuddy\"},{\"Id\":10,\"Age\":24,\"Email\":\"[email protected]\",\"FullName\":\"Ezri Hellard\",\"Username\":\"ehellard\"},{\"Id\":11,\"Age\":13,\"Email\":\"[email protected]\",\"FullName\":\"Mirabelle Dickson\",\"Username\":\"mdickson\"},{\"Id\":12,\"Age\":33,\"Email\":\"[email protected]\",\"FullName\":\"Bernadina Frontczak\",\"Username\":\"bfrontczak\"},{\"Id\":13,\"Age\":101,\"Email\":\"[email protected]\",\"FullName\":\"Marylin Graveson\",\"Username\":\"mgraveson\"},{\"Id\":14,\"Age\":11,\"Email\":\"[email protected]\",\"FullName\":\"Franklyn Stoter\",\"Username\":\"fstoter\"},{\"Id\":15,\"Age\":83,\"Email\":\"[email protected]\",\"FullName\":\"Burke Corcut\",\"Username\":\"bcorcut\"},{\"Id\":16,\"Age\":94,\"Email\":\"[email protected]\",\"FullName\":\"Arleyne Sikorsky\",\"Username\":\"asikorsky\"},{\"Id\":17,\"Age\":36,\"Email\":\"[email protected]\",\"FullName\":\"Kacy Life\",\"Username\":\"klife\"},{\"Id\":18,\"Age\":42,\"Email\":\"[email protected]\",\"FullName\":\"Gal Smallthwaite\",\"Username\":\"gsmallthwaite\"},{\"Id\":19,\"Age\":65,\"Email\":\"[email protected]\",\"FullName\":\"Kennett Roderighi\",\"Username\":\"kroderighi\"},{\"Id\":20,\"Age\":39,\"Email\":\"[email protected]\",\"FullName\":\"Harland Richardson\",\"Username\":\"hrichardson\"},{\"Id\":21,\"Age\":96,\"Email\":\"[email protected]\",\"FullName\":\"Aguie Tobin\",\"Username\":\"atobin\"},{\"Id\":22,\"Age\":101,\"Email\":\"[email protected]\",\"FullName\":\"Frederick Dedam\",\"Username\":\"fdedam\"},{\"Id\":23,\"Age\":34,\"Email\":\"[email protected]\",\"FullName\":\"Case Belchamber\",\"Username\":\"cbelchamber\"},{\"Id\":24,\"Age\":52,\"Email\":\"[email protected]\",\"FullName\":\"Kathy Carroll\",\"Username\":\"kcarroll\"},{\"Id\":25,\"Age\":25,\"Email\":\"[email protected]\",\"FullName\":\"Wallis Skep\",\"Username\":\"wskep\"},{\"Id\":26,\"Age\":48,\"Email\":\"[email protected]\",\"FullName\":\"Nell Paradyce\",\"Username\":\"nparadyce\"},{\"Id\":27,\"Age\":55,\"Email\":\"[email protected]\",\"FullName\":\"Demeter Sharple\",\"Username\":\"dsharple\"},{\"Id\":28,\"Age\":75,\"Email\":\"[email protected]\",\"FullName\":\"Anita Ruthven\",\"Username\":\"aruthven\"},{\"Id\":29,\"Age\":90,\"Email\":\"[email protected]\",\"FullName\":\"Carlie Gara\",\"Username\":\"cgara\"},{\"Id\":30,\"Age\":12,\"Email\":\"[email protected]\",\"FullName\":\"Sheilah Paprotny\",\"Username\":\"spaprotny\"}],\"Card\":[{\"Id\":1,\"Number\":\"1833 5024 0553 6211\",\"Cvc\":\"903\",\"Type\":0,\"UserId\":1},{\"Id\":2,\"Number\":\"3962 3870 5087 4536\",\"Cvc\":\"700\",\"Type\":1,\"UserId\":12},{\"Id\":3,\"Number\":\"9104 6735 7127 3894\",\"Cvc\":\"985\",\"Type\":0,\"UserId\":12},{\"Id\":4,\"Number\":\"5317 5177 3653 0084\",\"Cvc\":\"963\",\"Type\":1,\"UserId\":11},{\"Id\":5,\"Number\":\"0100 5244 4964 3100\",\"Cvc\":\"227\",\"Type\":0,\"UserId\":11},{\"Id\":6,\"Number\":\"1478 0420 6326 7013\",\"Cvc\":\"845\",\"Type\":1,\"UserId\":11},{\"Id\":7,\"Number\":\"2643 8516 1644 3240\",\"Cvc\":\"808\",\"Type\":0,\"UserId\":10},{\"Id\":8,\"Number\":\"3013 7441 5769 1224\",\"Cvc\":\"703\",\"Type\":1,\"UserId\":10},{\"Id\":9,\"Number\":\"3563 6747 1527 9955\",\"Cvc\":\"727\",\"Type\":0,\"UserId\":10},{\"Id\":10,\"Number\":\"4499 3123 4695 9542\",\"Cvc\":\"444\",\"Type\":0,\"UserId\":9},{\"Id\":11,\"Number\":\"9924 7778 1587 0277\",\"Cvc\":\"603\",\"Type\":1,\"UserId\":9},{\"Id\":12,\"Number\":\"5962 2881 2375 4209\",\"Cvc\":\"022\",\"Type\":0,\"UserId\":8},{\"Id\":13,\"Number\":\"4611 7969 4921 6749\",\"Cvc\":\"519\",\"Type\":1,\"UserId\":8},{\"Id\":14,\"Number\":\"4347 6119 2799 9266\",\"Cvc\":\"492\",\"Type\":0,\"UserId\":7},{\"Id\":15,\"Number\":\"3762 5646 9250 3278\",\"Cvc\":\"111\",\"Type\":0,\"UserId\":7},{\"Id\":16,\"Number\":\"9329 2624 0151 4535\",\"Cvc\":\"689\",\"Type\":1,\"UserId\":7},{\"Id\":17,\"Number\":\"5747 3965 9959 7596\",\"Cvc\":\"463\",\"Type\":1,\"UserId\":6},{\"Id\":18,\"Number\":\"7815 5830 0145 0448\",\"Cvc\":\"249\",\"Type\":0,\"UserId\":5},{\"Id\":19,\"Number\":\"8608 6806 8238 3092\",\"Cvc\":\"081\",\"Type\":1,\"UserId\":5},{\"Id\":20,\"Number\":\"4846 1275 4235 3039\",\"Cvc\":\"268\",\"Type\":1,\"UserId\":5},{\"Id\":21,\"Number\":\"2263 5851 7894 9441\",\"Cvc\":\"192\",\"Type\":1,\"UserId\":4},{\"Id\":22,\"Number\":\"7660 9400 3206 5606\",\"Cvc\":\"600\",\"Type\":1,\"UserId\":4},{\"Id\":23,\"Number\":\"9454 1480 3127 1373\",\"Cvc\":\"904\",\"Type\":1,\"UserId\":4},{\"Id\":24,\"Number\":\"8928 2433 2516 9511\",\"Cvc\":\"468\",\"Type\":1,\"UserId\":3},{\"Id\":25,\"Number\":\"2175 1623 6855 0876\",\"Cvc\":\"760\",\"Type\":1,\"UserId\":3},{\"Id\":26,\"Number\":\"1642 7380 2920 7598\",\"Cvc\":\"908\",\"Type\":0,\"UserId\":3},{\"Id\":27,\"Number\":\"1268 2352 8506 0500\",\"Cvc\":\"693\",\"Type\":1,\"UserId\":2},{\"Id\":28,\"Number\":\"5103 9356 9768 6854\",\"Cvc\":\"493\",\"Type\":0,\"UserId\":29},{\"Id\":29,\"Number\":\"7991 7779 5123 9211\",\"Cvc\":\"340\",\"Type\":0,\"UserId\":13},{\"Id\":30,\"Number\":\"9185 2070 3009 4543\",\"Cvc\":\"518\",\"Type\":1,\"UserId\":30},{\"Id\":31,\"Number\":\"7790 7962 4262 5606\",\"Cvc\":\"966\",\"Type\":0,\"UserId\":13},{\"Id\":32,\"Number\":\"7460 6498 2791 0231\",\"Cvc\":\"068\",\"Type\":0,\"UserId\":15},{\"Id\":33,\"Number\":\"5625 0434 5999 6254\",\"Cvc\":\"570\",\"Type\":1,\"UserId\":1},{\"Id\":34,\"Number\":\"4902 6975 5076 5316\",\"Cvc\":\"091\",\"Type\":0,\"UserId\":1},{\"Id\":35,\"Number\":\"5208 8381 5687 8508\",\"Cvc\":\"624\",\"Type\":0,\"UserId\":28},{\"Id\":36,\"Number\":\"5345 7357 8866 7508\",\"Cvc\":\"212\",\"Type\":1,\"UserId\":27},{\"Id\":37,\"Number\":\"6752 6869 9870 9732\",\"Cvc\":\"719\",\"Type\":1,\"UserId\":27},{\"Id\":38,\"Number\":\"0798 3871 2521 2016\",\"Cvc\":\"036\",\"Type\":0,\"UserId\":26},{\"Id\":39,\"Number\":\"1661 2121 6244 8487\",\"Cvc\":\"289\",\"Type\":0,\"UserId\":26},{\"Id\":40,\"Number\":\"0327 7877 3023 9451\",\"Cvc\":\"939\",\"Type\":0,\"UserId\":25},{\"Id\":41,\"Number\":\"2844 3311 3796 4444\",\"Cvc\":\"137\",\"Type\":0,\"UserId\":24},{\"Id\":42,\"Number\":\"7716 6230 0769 9366\",\"Cvc\":\"656\",\"Type\":1,\"UserId\":24},{\"Id\":43,\"Number\":\"2829 0002 6052 6217\",\"Cvc\":\"259\",\"Type\":1,\"UserId\":24},{\"Id\":44,\"Number\":\"1576 2740 8903 1499\",\"Cvc\":\"355\",\"Type\":0,\"UserId\":23},{\"Id\":45,\"Number\":\"6842 0546 4406 5606\",\"Cvc\":\"538\",\"Type\":0,\"UserId\":23},{\"Id\":46,\"Number\":\"9574 1800 3833 2972\",\"Cvc\":\"512\",\"Type\":1,\"UserId\":22},{\"Id\":47,\"Number\":\"9976 1161 9586 1806\",\"Cvc\":\"596\",\"Type\":1,\"UserId\":22},{\"Id\":48,\"Number\":\"6975 1775 3435 4897\",\"Cvc\":\"857\",\"Type\":1,\"UserId\":21},{\"Id\":49,\"Number\":\"9039 3485 8754 8863\",\"Cvc\":\"936\",\"Type\":1,\"UserId\":21},{\"Id\":50,\"Number\":\"4082 9960 2674 5955\",\"Cvc\":\"598\",\"Type\":1,\"UserId\":20},{\"Id\":51,\"Number\":\"5811 6621 2962 1020\",\"Cvc\":\"375\",\"Type\":0,\"UserId\":20},{\"Id\":52,\"Number\":\"7036 3344 0149 7880\",\"Cvc\":\"094\",\"Type\":1,\"UserId\":19},{\"Id\":53,\"Number\":\"9889 9719 6896 7474\",\"Cvc\":\"612\",\"Type\":1,\"UserId\":18},{\"Id\":54,\"Number\":\"5994 2396 1516 2411\",\"Cvc\":\"318\",\"Type\":0,\"UserId\":18},{\"Id\":55,\"Number\":\"0274 2943 4672 4028\",\"Cvc\":\"517\",\"Type\":0,\"UserId\":18},{\"Id\":56,\"Number\":\"0540 4834 3653 5943\",\"Cvc\":\"943\",\"Type\":1,\"UserId\":17},{\"Id\":57,\"Number\":\"2962 0872 0998 4724\",\"Cvc\":\"638\",\"Type\":0,\"UserId\":17},{\"Id\":58,\"Number\":\"8746 7253 1464 1729\",\"Cvc\":\"756\",\"Type\":1,\"UserId\":16},{\"Id\":59,\"Number\":\"3863 8683 6862 0373\",\"Cvc\":\"640\",\"Type\":1,\"UserId\":16},{\"Id\":60,\"Number\":\"9466 9592 0503 1368\",\"Cvc\":\"753\",\"Type\":0,\"UserId\":14},{\"Id\":61,\"Number\":\"6777 2480 1837 5824\",\"Cvc\":\"533\",\"Type\":0,\"UserId\":30}],\"Purchase\":[{\"Id\":1,\"ProductKey\":\"ZTZ3-0D2S-G4TJ\",\"Type\":1,\"Date\":\"2016-12-07T05:49:00\",\"CardId\":1,\"GameId\":21},{\"Id\":2,\"ProductKey\":\"S2F8-PRE7-17ET\",\"Type\":0,\"Date\":\"2016-09-11T22:27:00\",\"CardId\":16,\"GameId\":39},{\"Id\":3,\"ProductKey\":\"8QBB-2FJ1-X0DS\",\"Type\":0,\"Date\":\"2016-01-28T16:06:00\",\"CardId\":15,\"GameId\":2},{\"Id\":4,\"ProductKey\":\"06UC-X7QA-8HME\",\"Type\":0,\"Date\":\"2016-07-21T23:51:00\",\"CardId\":16,\"GameId\":72},{\"Id\":5,\"ProductKey\":\"MPO5-V59I-MQ4Z\",\"Type\":1,\"Date\":\"2017-10-30T10:16:00\",\"CardId\":15,\"GameId\":25},{\"Id\":6,\"ProductKey\":\"OI20-7YUL-L4ZI\",\"Type\":1,\"Date\":\"2018-02-03T06:38:00\",\"CardId\":13,\"GameId\":19},{\"Id\":7,\"ProductKey\":\"AHGD-O3GX-L6SQ\",\"Type\":0,\"Date\":\"2018-08-08T08:10:00\",\"CardId\":12,\"GameId\":31},{\"Id\":8,\"ProductKey\":\"K6SR-TSRJ-9CKE\",\"Type\":0,\"Date\":\"2017-08-29T17:59:00\",\"CardId\":13,\"GameId\":41},{\"Id\":9,\"ProductKey\":\"GVI2-PVBQ-BPYA\",\"Type\":1,\"Date\":\"2016-07-20T05:12:00\",\"CardId\":10,\"GameId\":56},{\"Id\":10,\"ProductKey\":\"MHMH-MMMV-A49I\",\"Type\":0,\"Date\":\"2018-05-11T04:05:00\",\"CardId\":17,\"GameId\":21},{\"Id\":11,\"ProductKey\":\"2U9D-SBQB-D6Z0\",\"Type\":0,\"Date\":\"2018-06-19T16:00:00\",\"CardId\":10,\"GameId\":49},{\"Id\":12,\"ProductKey\":\"63S5-ZJ4Z-7A9O\",\"Type\":0,\"Date\":\"2016-11-18T05:52:00\",\"CardId\":10,\"GameId\":27},{\"Id\":13,\"ProductKey\":\"DH19-WXJO-NMZK\",\"Type\":0,\"Date\":\"2016-10-21T09:44:00\",\"CardId\":7,\"GameId\":21},{\"Id\":14,\"ProductKey\":\"UE88-QX0A-P39F\",\"Type\":0,\"Date\":\"2018-09-08T17:36:00\",\"CardId\":7,\"GameId\":49},{\"Id\":15,\"ProductKey\":\"1D8W-90IT-EC63\",\"Type\":1,\"Date\":\"2017-08-26T16:56:00\",\"CardId\":9,\"GameId\":28},{\"Id\":16,\"ProductKey\":\"ATU8-UHHB-Z5YN\",\"Type\":0,\"Date\":\"2016-09-27T03:30:00\",\"CardId\":8,\"GameId\":22},{\"Id\":17,\"ProductKey\":\"KQ8E-Q4BF-AN91\",\"Type\":0,\"Date\":\"2016-01-02T19:25:00\",\"CardId\":4,\"GameId\":36},{\"Id\":18,\"ProductKey\":\"WDU1-ICUT-02ZJ\",\"Type\":0,\"Date\":\"2017-01-14T04:09:00\",\"CardId\":4,\"GameId\":42},{\"Id\":19,\"ProductKey\":\"O71F-MZON-6VEK\",\"Type\":0,\"Date\":\"2018-04-19T06:26:00\",\"CardId\":4,\"GameId\":52},{\"Id\":20,\"ProductKey\":\"C1MH-K93U-84R7\",\"Type\":0,\"Date\":\"2016-06-26T12:40:00\",\"CardId\":11,\"GameId\":39},{\"Id\":21,\"ProductKey\":\"RLMG-NBRC-IBMT\",\"Type\":1,\"Date\":\"2017-08-25T06:12:00\",\"CardId\":4,\"GameId\":49},{\"Id\":22,\"ProductKey\":\"XNIC-NWQP-SG1O\",\"Type\":1,\"Date\":\"2016-09-08T17:07:00\",\"CardId\":17,\"GameId\":64},{\"Id\":23,\"ProductKey\":\"GO8S-9YHJ-7ZDA\",\"Type\":0,\"Date\":\"2018-07-20T18:52:00\",\"CardId\":17,\"GameId\":32},{\"Id\":24,\"ProductKey\":\"OAIT-BT43-O4IY\",\"Type\":0,\"Date\":\"2016-11-15T18:07:00\",\"CardId\":30,\"GameId\":56},{\"Id\":25,\"ProductKey\":\"SCZZ-NSHF-5B4R\",\"Type\":1,\"Date\":\"2018-07-25T18:31:00\",\"CardId\":30,\"GameId\":68},{\"Id\":26,\"ProductKey\":\"KSQ3-PTQP-Y1ZY\",\"Type\":0,\"Date\":\"2017-05-11T08:15:00\",\"CardId\":28,\"GameId\":63},{\"Id\":27,\"ProductKey\":\"HR1H-U2QP-FZ13\",\"Type\":1,\"Date\":\"2016-09-12T22:11:00\",\"CardId\":28,\"GameId\":47},{\"Id\":28,\"ProductKey\":\"P0P2-T26Q-BD4G\",\"Type\":1,\"Date\":\"2017-01-20T21:52:00\",\"CardId\":28,\"GameId\":48},{\"Id\":29,\"ProductKey\":\"MVKV-41DL-XY53\",\"Type\":1,\"Date\":\"2016-12-03T23:16:00\",\"CardId\":28,\"GameId\":25},{\"Id\":30,\"ProductKey\":\"1SWT-LB8W-F6A8\",\"Type\":0,\"Date\":\"2017-10-06T17:13:00\",\"CardId\":27,\"GameId\":49},{\"Id\":31,\"ProductKey\":\"Z56Z-3I65-BF2Z\",\"Type\":1,\"Date\":\"2017-07-05T05:17:00\",\"CardId\":27,\"GameId\":6},{\"Id\":32,\"ProductKey\":\"NX2Y-9V53-W2DM\",\"Type\":1,\"Date\":\"2017-12-05T17:03:00\",\"CardId\":17,\"GameId\":54},{\"Id\":33,\"ProductKey\":\"SXVK-BMHK-DDM7\",\"Type\":0,\"Date\":\"2017-08-04T12:34:00\",\"CardId\":26,\"GameId\":4},{\"Id\":34,\"ProductKey\":\"VJME-XGKT-B0G0\",\"Type\":1,\"Date\":\"2017-12-12T09:46:00\",\"CardId\":25,\"GameId\":7},{\"Id\":35,\"ProductKey\":\"J7HW-8TP4-GNP8\",\"Type\":0,\"Date\":\"2017-12-12T04:37:00\",\"CardId\":22,\"GameId\":45},{\"Id\":36,\"ProductKey\":\"GA1H-0C36-FHMG\",\"Type\":0,\"Date\":\"2016-11-27T12:17:00\",\"CardId\":21,\"GameId\":20},{\"Id\":37,\"ProductKey\":\"SKXY-JWKO-RTBB\",\"Type\":1,\"Date\":\"2017-07-31T12:07:00\",\"CardId\":21,\"GameId\":36},{\"Id\":38,\"ProductKey\":\"DR0M-A5NA-32R6\",\"Type\":0,\"Date\":\"2017-12-29T19:37:00\",\"CardId\":22,\"GameId\":24},{\"Id\":39,\"ProductKey\":\"3SAH-F3AI-OASH\",\"Type\":1,\"Date\":\"2017-11-12T03:51:00\",\"CardId\":20,\"GameId\":11},{\"Id\":40,\"ProductKey\":\"JV3D-9UJF-JNE3\",\"Type\":1,\"Date\":\"2017-10-01T01:14:00\",\"CardId\":19,\"GameId\":12},{\"Id\":41,\"ProductKey\":\"D7X0-670A-PQZ1\",\"Type\":0,\"Date\":\"2016-09-13T03:51:00\",\"CardId\":18,\"GameId\":26},{\"Id\":42,\"ProductKey\":\"3MNF-YX2C-XJAM\",\"Type\":1,\"Date\":\"2016-08-29T05:17:00\",\"CardId\":26,\"GameId\":54},{\"Id\":43,\"ProductKey\":\"B74V-1I23-TQ79\",\"Type\":0,\"Date\":\"2018-01-28T00:34:00\",\"CardId\":3,\"GameId\":61},{\"Id\":44,\"ProductKey\":\"6PW2-KB71-V7D6\",\"Type\":1,\"Date\":\"2017-08-31T17:09:00\",\"CardId\":29,\"GameId\":53},{\"Id\":45,\"ProductKey\":\"QDSR-9Q9T-C2RU\",\"Type\":1,\"Date\":\"2018-02-28T08:38:00\",\"CardId\":31,\"GameId\":24},{\"Id\":46,\"ProductKey\":\"M19G-W1F4-VYCX\",\"Type\":1,\"Date\":\"2018-06-22T12:45:00\",\"CardId\":48,\"GameId\":49},{\"Id\":47,\"ProductKey\":\"SUSQ-N2ZI-NYQL\",\"Type\":1,\"Date\":\"2016-04-16T14:45:00\",\"CardId\":46,\"GameId\":28},{\"Id\":48,\"ProductKey\":\"645Z-G6AN-4VT6\",\"Type\":0,\"Date\":\"2017-10-20T11:26:00\",\"CardId\":46,\"GameId\":71},{\"Id\":49,\"ProductKey\":\"S2DD-980Z-PE85\",\"Type\":1,\"Date\":\"2016-04-25T13:53:00\",\"CardId\":46,\"GameId\":52},{\"Id\":50,\"ProductKey\":\"0ZIK-G5HQ-9R77\",\"Type\":0,\"Date\":\"2018-01-15T15:50:00\",\"CardId\":45,\"GameId\":9},{\"Id\":51,\"ProductKey\":\"ER5O-7JYC-AMXD\",\"Type\":1,\"Date\":\"2017-05-16T04:34:00\",\"CardId\":45,\"GameId\":40},{\"Id\":52,\"ProductKey\":\"K8LU-TVAX-13OZ\",\"Type\":0,\"Date\":\"2018-02-24T20:06:00\",\"CardId\":45,\"GameId\":30},{\"Id\":53,\"ProductKey\":\"4ATM-8WL7-PZWJ\",\"Type\":1,\"Date\":\"2018-07-04T18:07:00\",\"CardId\":42,\"GameId\":42},{\"Id\":54,\"ProductKey\":\"XWCY-1SZG-BEIR\",\"Type\":1,\"Date\":\"2016-04-27T18:40:00\",\"CardId\":48,\"GameId\":9},{\"Id\":55,\"ProductKey\":\"9ZNM-P2R5-W7ZK\",\"Type\":0,\"Date\":\"2017-05-17T19:38:00\",\"CardId\":41,\"GameId\":33},{\"Id\":56,\"ProductKey\":\"GDYR-RQQC-CMQH\",\"Type\":0,\"Date\":\"2018-07-10T14:43:00\",\"CardId\":40,\"GameId\":22},{\"Id\":57,\"ProductKey\":\"OA86-KA8J-7F2N\",\"Type\":1,\"Date\":\"2017-03-27T18:19:00\",\"CardId\":38,\"GameId\":13},{\"Id\":58,\"ProductKey\":\"XU6W-X4HF-BWKZ\",\"Type\":0,\"Date\":\"2017-07-20T14:22:00\",\"CardId\":37,\"GameId\":4},{\"Id\":59,\"ProductKey\":\"R1LT-E9ZK-X8PW\",\"Type\":0,\"Date\":\"2017-04-12T06:39:00\",\"CardId\":37,\"GameId\":56},{\"Id\":60,\"ProductKey\":\"7VOD-PWOY-ZQV7\",\"Type\":1,\"Date\":\"2016-06-29T10:42:00\",\"CardId\":35,\"GameId\":39},{\"Id\":61,\"ProductKey\":\"MMIB-6IA6-L2WU\",\"Type\":1,\"Date\":\"2016-04-10T17:40:00\",\"CardId\":35,\"GameId\":3},{\"Id\":62,\"ProductKey\":\"KIJH-7JG6-0BHP\",\"Type\":1,\"Date\":\"2018-01-11T19:46:00\",\"CardId\":35,\"GameId\":17},{\"Id\":63,\"ProductKey\":\"DCU0-S60G-NTQJ\",\"Type\":0,\"Date\":\"2017-01-22T09:33:00\",\"CardId\":35,\"GameId\":70},{\"Id\":64,\"ProductKey\":\"8O03-ZQQJ-KJUA\",\"Type\":1,\"Date\":\"2017-09-10T04:11:00\",\"CardId\":40,\"GameId\":45},{\"Id\":65,\"ProductKey\":\"B6S5-X84D-NBMM\",\"Type\":0,\"Date\":\"2018-01-11T06:49:00\",\"CardId\":48,\"GameId\":70},{\"Id\":66,\"ProductKey\":\"TMPE-77M4-A077\",\"Type\":1,\"Date\":\"2016-02-21T22:11:00\",\"CardId\":51,\"GameId\":62},{\"Id\":67,\"ProductKey\":\"DHZQ-8EJS-HOX6\",\"Type\":0,\"Date\":\"2017-08-02T09:16:00\",\"CardId\":50,\"GameId\":25},{\"Id\":68,\"ProductKey\":\"AZ8M-A9AD-ZVFZ\",\"Type\":0,\"Date\":\"2016-07-05T17:01:00\",\"CardId\":31,\"GameId\":51},{\"Id\":69,\"ProductKey\":\"MJV4-941Z-DQFE\",\"Type\":1,\"Date\":\"2016-02-02T19:38:00\",\"CardId\":60,\"GameId\":49},{\"Id\":70,\"ProductKey\":\"GCMK-QOGE-Q2H9\",\"Type\":0,\"Date\":\"2016-06-11T10:53:00\",\"CardId\":60,\"GameId\":52},{\"Id\":71,\"ProductKey\":\"4OYL-G8L4-8OQA\",\"Type\":0,\"Date\":\"2017-09-16T16:04:00\",\"CardId\":60,\"GameId\":51},{\"Id\":72,\"ProductKey\":\"HZ88-HJJI-B8K6\",\"Type\":0,\"Date\":\"2016-10-24T13:26:00\",\"CardId\":60,\"GameId\":46},{\"Id\":73,\"ProductKey\":\"FLGX-XF4O-DUXD\",\"Type\":0,\"Date\":\"2016-07-26T17:20:00\",\"CardId\":32,\"GameId\":34},{\"Id\":74,\"ProductKey\":\"ENIO-WZ1W-5KZX\",\"Type\":1,\"Date\":\"2017-12-27T05:10:00\",\"CardId\":32,\"GameId\":53},{\"Id\":75,\"ProductKey\":\"E3FH-1WMG-BP5V\",\"Type\":1,\"Date\":\"2018-08-31T15:55:00\",\"CardId\":32,\"GameId\":29},{\"Id\":76,\"ProductKey\":\"L81A-M7PG-OORT\",\"Type\":1,\"Date\":\"2018-06-18T15:45:00\",\"CardId\":59,\"GameId\":59},{\"Id\":77,\"ProductKey\":\"IH4M-JA4K-RWKD\",\"Type\":0,\"Date\":\"2017-08-03T12:48:00\",\"CardId\":57,\"GameId\":73},{\"Id\":78,\"ProductKey\":\"10UI-GAM8-OJC8\",\"Type\":1,\"Date\":\"2017-01-03T16:28:00\",\"CardId\":57,\"GameId\":7},{\"Id\":79,\"ProductKey\":\"45EV-90DX-6BON\",\"Type\":1,\"Date\":\"2017-09-25T05:40:00\",\"CardId\":56,\"GameId\":38},{\"Id\":80,\"ProductKey\":\"Q00V-0I0I-74MJ\",\"Type\":0,\"Date\":\"2018-06-06T20:34:00\",\"CardId\":56,\"GameId\":48},{\"Id\":81,\"ProductKey\":\"WWJ2-5Z74-QVPC\",\"Type\":1,\"Date\":\"2016-09-28T07:57:00\",\"CardId\":54,\"GameId\":74},{\"Id\":82,\"ProductKey\":\"C06F-2JAW-6U0U\",\"Type\":0,\"Date\":\"2016-12-25T12:01:00\",\"CardId\":52,\"GameId\":67},{\"Id\":83,\"ProductKey\":\"66KK-IFY5-7TII\",\"Type\":1,\"Date\":\"2017-02-04T00:11:00\",\"CardId\":52,\"GameId\":28},{\"Id\":84,\"ProductKey\":\"AFKU-9M33-43YU\",\"Type\":1,\"Date\":\"2018-01-22T11:51:00\",\"CardId\":52,\"GameId\":39},{\"Id\":85,\"ProductKey\":\"9PGE-RGDU-BOC5\",\"Type\":0,\"Date\":\"2017-01-18T02:48:00\",\"CardId\":51,\"GameId\":2},{\"Id\":86,\"ProductKey\":\"PVDH-C5X0-AN1G\",\"Type\":0,\"Date\":\"2016-07-04T14:35:00\",\"CardId\":50,\"GameId\":63},{\"Id\":87,\"ProductKey\":\"8XNZ-LD1T-A57U\",\"Type\":0,\"Date\":\"2017-04-01T17:27:00\",\"CardId\":61,\"GameId\":65},{\"Id\":88,\"ProductKey\":\"AYFW-CECP-OPP6\",\"Type\":1,\"Date\":\"2016-09-08T02:54:00\",\"CardId\":30,\"GameId\":55}]}"; var datasets = JsonConvert.DeserializeObject <Dictionary <string, IEnumerable <JObject> > >(datasetsJson); foreach (var dataset in datasets) { var entityType = GetType(dataset.Key); var entities = dataset.Value .Select(j => j.ToObject(entityType)) .ToArray(); context.AddRange(entities); } context.SaveChanges(); }
public static string ImportUsers(VaporStoreDbContext context, string jsonString) { var users = JsonConvert.DeserializeObject <UserDto[]>(jsonString); var sb = new StringBuilder(); var usersToAdd = new List <User>(); foreach (var userDto in users) { if (!IsValid(userDto) || userDto.Cards.Length == 0 || !userDto.Cards.All(IsValid)) { sb.AppendLine("Invalid Data"); continue; } var user = new User { FullName = userDto.FullName, Username = userDto.Username, Email = userDto.Email, Age = userDto.Age }; foreach (var userDtoCard in userDto.Cards) { user.Cards.Add(new Card { Number = userDtoCard.Number, Cvc = userDtoCard.CVC, Type = Enum.Parse <CardType>(userDtoCard.Type) }); } usersToAdd.Add(user); sb.AppendLine($"Imported {user.Username} with {user.Cards.Count} cards"); } context.AddRange(usersToAdd); context.SaveChanges(); return(sb.ToString().TrimEnd()); }
public static string ImportUsers(VaporStoreDbContext context, string jsonString) { StringBuilder sb = new StringBuilder(); var userDtos = JsonConvert.DeserializeObject <IEnumerable <UserInputModel> >(jsonString); HashSet <User> validUsers = new HashSet <User>(); foreach (var userDto in userDtos) { if (!IsValid(userDto) || !userDto.Cards.All(IsValid) || userDto.Cards.Length == 0) { sb.AppendLine(GlobalConstants.ERROR_MESSAGE); continue; } User user = new User { FullName = userDto.FullName, Username = userDto.Username, Age = userDto.Age, Email = userDto.Email, Cards = userDto.Cards.Select(x => new Card { Number = x.Number, Cvc = x.CVC, Type = Enum.Parse <CardType>(x.Type) }) .ToList() }; validUsers.Add(user); sb.AppendLine($"Imported {userDto.Username} with {userDto.Cards.Length} cards"); } context.AddRange(validUsers); context.SaveChanges(); return(sb.ToString().Trim()); }
public static string ImportPurchases(VaporStoreDbContext context, string xmlString) { StringBuilder sb = new StringBuilder(); XmlRootAttribute xmlRoot = new XmlRootAttribute("Purchases"); XmlSerializer xmlSerializer = new XmlSerializer(typeof(PurchaseInputModel[]), xmlRoot); using StringReader stringReader = new StringReader(xmlString); PurchaseInputModel[] purchaseDtos = (PurchaseInputModel[])xmlSerializer.Deserialize(stringReader); HashSet <Purchase> validPurchases = new HashSet <Purchase>(); foreach (var purchaseDto in purchaseDtos) { if (!IsValid(purchaseDto)) { sb.AppendLine(GlobalConstants.ERROR_MESSAGE); continue; } var date = DateTime.ParseExact(purchaseDto.Date, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture); Purchase purchase = new Purchase { ProductKey = purchaseDto.ProductKey, Type = Enum.Parse <PurchaseType>(purchaseDto.Type), Date = date, Game = context.Games.First(x => x.Name == purchaseDto.GameName), Card = context.Cards.First(x => x.Number == purchaseDto.CardNumber) }; validPurchases.Add(purchase); sb.AppendLine($"Imported {purchaseDto.GameName} for {purchase.Card.User.Username}"); } context.AddRange(validPurchases); context.SaveChanges(); return(sb.ToString().Trim()); }
public static string ImportUsers(VaporStoreDbContext context, string jsonString) { var result = new StringBuilder(); var users = new List <User>(); var importedUsers = JsonConvert.DeserializeObject <List <ImportUserDto> >(jsonString); foreach (var importUserDto in importedUsers) { if (!IsValid(importUserDto)) { result.AppendLine("Invalid Data"); continue; } var user = new User { Username = importUserDto.Username, Age = importUserDto.Age, Email = importUserDto.Email, FullName = importUserDto.FullName, Cards = importUserDto.Cards.Select(x => new Card { Cvc = x.Cvc, Number = x.Number, Type = x.Type }).ToList() }; users.Add(user); result.AppendLine($"Imported {user.Username} with {user.Cards.Count} cards"); } context.AddRange(users); context.SaveChanges(); return(result.ToString().TrimEnd()); }
public static string ImportUsers(VaporStoreDbContext context, string jsonString) { var userDtos = JsonConvert.DeserializeObject <UserImportDto[]>(jsonString) .ToArray(); var users = new List <User>(); var sb = new StringBuilder(); foreach (var userDto in userDtos) { if (!IsValid(userDto) || !userDto.Cards.All(IsValid)) { sb.AppendLine("Invalid Data"); continue; } var cards = userDto.Cards .Select(c => new Card(c.Number, c.Cvc, c.Type)) .ToArray(); users.Add(new User( userDto.FullName, userDto.Username, userDto.Email, userDto.Age, cards)); sb.AppendLine($"Imported {userDto.Username} with {userDto.Cards.Length} cards"); } context.AddRange(users); context.SaveChanges(); return(sb.ToString().TrimEnd()); }
public static string ImportGames(VaporStoreDbContext context, string jsonString) { StringBuilder sb = new StringBuilder(); var gamesDtos = JsonConvert.DeserializeObject <IEnumerable <GameInputModel> >(jsonString); HashSet <Game> validGames = new HashSet <Game>(); foreach (var game in gamesDtos) { if (!IsValid(game) || game.Tags.Length == 0) { sb.AppendLine(GlobalConstants.ERROR_MESSAGE); continue; } if (!context.Developers.Any(d => d.Name == game.Developer)) { Developer dev = new Developer { Name = game.Developer }; context.Developers.Add(dev); } if (!context.Genres.Any(g => g.Name == game.Genre)) { Genre genre = new Genre { Name = game.Genre }; context.Genres.Add(genre); } foreach (var tagName in game.Tags) { if (!context.Tags.Any(t => t.Name == tagName)) { Tag tag = new Tag { Name = tagName }; context.Tags.Add(tag); } } context.SaveChanges(); var releaseDate = DateTime.ParseExact(game.ReleaseDate, "yyyy-MM-dd", CultureInfo.InvariantCulture); Game validGame = new Game { Name = game.Name, Price = game.Price, ReleaseDate = releaseDate, DeveloperId = context.Developers.First(x => x.Name == game.Developer).Id, GenreId = context.Genres.First(x => x.Name == game.Genre).Id, GameTags = game.Tags.Select(x => new GameTag { TagId = context.Tags.First(t => t.Name == x).Id }) .ToList() }; validGames.Add(validGame); sb.AppendLine ($"Added {game.Name} ({game.Genre}) with {game.Tags.Length} tags"); } context.AddRange(validGames); context.SaveChanges(); return(sb.ToString().Trim()); }
public static string ImportGames(VaporStoreDbContext context, string jsonString) { ImportGameDto[] gameDtos = JsonConvert.DeserializeObject <ImportGameDto[]>(jsonString); StringBuilder result = new StringBuilder(); List <Game> gamesToAdd = new List <Game>(); foreach (var gameDto in gameDtos) { if (!IsValid(gameDto)) { result.AppendLine(ErrorMessage); throw new Exception(ErrorMessage); continue; } if (gameDto.Tags.IsNullOrEmpty()) { result.AppendLine(ErrorMessage); continue; } DateTime validDate; bool isDateValid = DateTime.TryParseExact(gameDto.ReleaseDate, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out validDate); if (!isDateValid) { result.AppendLine(ErrorMessage); continue; } Game game = new Game { }; if (!gamesToAdd.Any(g => g.Developer.Name == gameDto.Developer)) { Developer developer = new Developer { Name = gameDto.Developer }; game.Developer = developer; } else { Game gameWithDeveloper = gamesToAdd.FirstOrDefault(g => g.Developer.Name == gameDto.Developer); game.Developer = gameWithDeveloper.Developer; } if (!gamesToAdd.Any(g => g.Genre.Name == gameDto.Genre)) { Genre genre = new Genre { Name = gameDto.Genre }; game.Genre = genre; } else { Game gameWithGenre = gamesToAdd.FirstOrDefault(g => g.Genre.Name == gameDto.Genre); game.Genre = gameWithGenre.Genre; } foreach (var tag in gameDto.Tags) { if (!gamesToAdd.Any(g => g.GameTags.Any(gt => gt.Tag.Name == tag))) { Tag newTag = new Tag { Name = tag }; GameTag gameTag = new GameTag { Tag = newTag, }; game.GameTags.Add(gameTag); } else { Game gameWithTag = gamesToAdd.FirstOrDefault(g => g.GameTags.Any(gt => gt.Tag.Name == tag)); GameTag gameTag = gameWithTag.GameTags.FirstOrDefault(gt => gt.Tag.Name == tag); game.GameTags.Add(gameTag); } } gamesToAdd.Add(game); result.AppendLine( String.Format( SuccsessfulImportGameMessage, game.Name, game.Genre.Name, game.GameTags.Count)); } context.AddRange(gamesToAdd); context.SaveChanges(); return(result.ToString().TrimEnd()); }
public static string ImportPurchases(VaporStoreDbContext context, string xmlString) { XmlRootAttribute xmlRoot = new XmlRootAttribute("Purchases"); XmlSerializer serializer = new XmlSerializer(typeof(ImportPurchaseDto[]), xmlRoot); using StringReader sr = new StringReader(xmlString); ImportPurchaseDto[] purchasesDto = (ImportPurchaseDto[])serializer.Deserialize(sr); HashSet <Purchase> purchases = new HashSet <Purchase>(); StringBuilder result = new StringBuilder(); foreach (ImportPurchaseDto purchaseDto in purchasesDto) { if (!IsValid(purchaseDto)) { result.AppendLine(ErrorMessage); continue; } bool isDateValid = DateTime.TryParseExact(purchaseDto.Date, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime date); if (!isDateValid) { result.AppendLine(ErrorMessage); continue; } bool isPurchaseValidType = Enum.TryParse(purchaseDto.Type, out PurchaseType type); if (!isPurchaseValidType) { result.AppendLine(ErrorMessage); continue; } Card card = context.Cards.FirstOrDefault(c => c.Number == purchaseDto.Card); if (card == null) { result.AppendLine(ErrorMessage); continue; } Game game = context.Games.FirstOrDefault(g => g.Name == purchaseDto.Title); if (game == null) { result.AppendLine(ErrorMessage); continue; } Purchase purchase = new Purchase() { Type = type, Date = date, ProductKey = purchaseDto.Key, Card = card, Game = game }; purchases.Add(purchase); result.AppendLine(string.Format(SuccessfullyImportedPurchaseMessage, purchase.Game.Name, purchase.Card.User.Username)); } context.AddRange(purchases); context.SaveChanges(); return(result.ToString().TrimEnd()); }
public static string ImportGames(VaporStoreDbContext context, string jsonString) { var result = new StringBuilder(); var games = new List <Game>(); //var gameTags = new List<GameTag>(); var importedGames = JsonConvert.DeserializeObject <List <ImportGameDto> >(jsonString); var developers = context.Developers.ToList(); var genres = context.Genres.ToList(); var allTags = context.Tags.ToList(); foreach (var importGameDto in importedGames) { if (!IsValid(importGameDto)) { result.AppendLine("Invalid Data"); continue; } var developer = developers.FirstOrDefault(d => d.Name == importGameDto.Developer); if (developer == null) { developers.Add(new Developer { Name = importGameDto.Developer }); developer = developers.FirstOrDefault(d => d.Name == importGameDto.Developer); } var genre = genres.FirstOrDefault(g => g.Name == importGameDto.Genre); if (genre == null) { genres.Add(new Genre { Name = importGameDto.Genre }); genre = genres.FirstOrDefault(g => g.Name == importGameDto.Genre); } var game = new Game { Developer = developer, Genre = genre, Name = importGameDto.Name, Price = importGameDto.Price, ReleaseDate = importGameDto.ReleaseDate }; foreach (var dtoTag in importGameDto.Tags) { var tag = allTags.FirstOrDefault(t => t.Name == dtoTag); if (tag == null) { allTags.Add(new Tag { Name = dtoTag }); tag = allTags.FirstOrDefault(t => t.Name == dtoTag); } game.GameTags.Add(new GameTag { Game = game, Tag = tag }); } games.Add(game); result.AppendLine($"Added {game.Name} ({game.Genre.Name}) with {game.GameTags.Count} tags"); } context.AddRange(games); context.SaveChanges(); return(result.ToString().TrimEnd()); }