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); }
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); }