public async Task <Deck> Add(YgoProDeck ygoProDeck) { var newDeck = new Deck { UserId = ygoProDeck.UserId, Name = ygoProDeck.Name, Description = ygoProDeck.Description, Created = DateTime.UtcNow, Updated = DateTime.UtcNow }; var deckTypes = (await _deckTypeRepository.AllDeckTypes()).ToDictionary(dt => dt.Name, dt => dt); var mainDeckUniqueCards = ygoProDeck.Main.Select(c => c).Distinct().ToList(); var extraDeckUniqueCards = ygoProDeck.Extra.Select(c => c).Distinct().ToList(); var sideDeckUniqueCards = ygoProDeck.Side.Select(c => c).Distinct().ToList(); var mainDeckCardCopies = ygoProDeck.Main.GroupBy(c => c).ToDictionary(g => g.Key, g => g.Count()); var extraDeckCardCopies = ygoProDeck.Extra.GroupBy(c => c).ToDictionary(g => g.Key, g => g.Count()); var sideDeckCardCopies = ygoProDeck.Side.GroupBy(c => c).ToDictionary(g => g.Key, g => g.Count()); newDeck = await AddCardsToDeckByCardNumber(mainDeckUniqueCards, newDeck, deckTypes[DeckTypeConstants.Main], mainDeckCardCopies); newDeck = await AddCardsToDeckByCardNumber(extraDeckUniqueCards, newDeck, deckTypes[DeckTypeConstants.Extra], extraDeckCardCopies); newDeck = await AddCardsToDeckByCardNumber(sideDeckUniqueCards, newDeck, deckTypes[DeckTypeConstants.Side], sideDeckCardCopies); await _deckRepository.Add(newDeck); return(newDeck); }
public PackUnit CreatePack(string packTitle = null, PackTypeVariations packType = PackTypeVariations.cards52) { PackUnit packUnit = _packFactory.Create(packTitle, packType); _packStorage.Add(packUnit); return packUnit; }
public bool AddWithCheck(Player newPlayer) { if (GodsArenaApiContext.Players.Where(p => p.Username == newPlayer.Username).FirstOrDefault() == null) { Wallet newWallet = new Wallet() { Player = newPlayer }; PlayerStats newPlayerStats = new PlayerStats() { Player = newPlayer }; Deck newDeck1 = new Deck() { Player = newPlayer, Name = "First deck", IsActive = true }; Deck newDeck2 = new Deck() { Player = newPlayer, Name = "Second deck", IsActive = false }; Deck newDeck3 = new Deck() { Player = newPlayer, Name = "Third deck", IsActive = false }; Pack newPack = new Pack() { Player = newPlayer }; GodsArenaApiContext.Players.Add(newPlayer); _walletRepository.Add(newWallet); _playerStatsRepository.Add(newPlayerStats); _deckRepository.Add(newDeck1); _deckRepository.Add(newDeck2); _deckRepository.Add(newDeck3); _packRepository.Add(newPack); return(true); } return(false); }