public static ApiDeck ToApiDeck(this Deck deck)
        {
            var apiDeck = new ApiDeck
            {
                Id           = deck.Id,
                Name         = deck.Name,
                Username     = deck.Owner.UserName,
                Faction      = deck.Faction,
                LastUpdated  = deck.LastModified,
                Cards        = new List <ApiDeckCard>(),
                RookeryCards = new List <ApiDeckCard>()
            };

            foreach (var deckCard in deck.DeckCards.Where(dc => dc.CardType == DeckCardType.Normal))
            {
                apiDeck.Cards.Add(new ApiDeckCard {
                    Code = deckCard.Card.Code, Count = deckCard.Count
                });
            }

            foreach (var deckCard in deck.DeckCards.Where(dc => dc.CardType == DeckCardType.Rookery))
            {
                apiDeck.RookeryCards.Add(new ApiDeckCard {
                    Code = deckCard.Card.Code, Count = deckCard.Count
                });
            }

            return(apiDeck);
        }
Exemple #2
0
        private async Task <Deck> GetDeckFromApiDeckAsync(ApiDeck apiDeck)
        {
            var cardsByCode = (await context.Card.Include(c => c.Faction).Include(c => c.Pack).ToListAsync()).ToDictionary(key => key.Code, value => value);

            var owner = await userManager.FindByNameAsync(User.Identity.Name);

            var faction = await context.Faction.SingleOrDefaultAsync(f => f.Code == apiDeck.Faction.Code);

            var deck = new Deck
            {
                Name         = apiDeck.Name,
                CreatedDate  = DateTime.UtcNow,
                LastModified = DateTime.UtcNow,
                OwnerId      = owner.Id,
                FactionId    = faction.Id,
                Faction      = faction,
                DeckCards    = new Collection <DeckCard>()
            };

            AddDeckCards(deck, apiDeck.Cards, DeckCardType.Normal, cardsByCode);
            AddDeckCards(deck, apiDeck.RookeryCards, DeckCardType.Rookery, cardsByCode);

            return(deck);
        }