コード例 #1
0
        public async Task <DeckDetail> GetDeckById(long id)
        {
            var deckResult = await _dbContext.Deck.AsNoTracking().Include(d => d.User).SingleOrDefaultAsync(d => d.Id == id);

            var cardResult = _dbContext.CardDetail.FromSql("EXEC usp_GetDeckCardsByDeckId @DeckId", new SqlParameter("DeckId", id)).AsNoTracking().ToList();

            if (deckResult != null)
            {
                var deckDetail = DeckDetail.From(deckResult);

                var groupedDeckCards = cardResult.GroupBy(dt => dt.DeckType, dt => dt);

                foreach (var cardGroup in groupedDeckCards)
                {
                    switch (cardGroup.Key.ToLower())
                    {
                    case "main":
                        deckDetail.MainDeck = cardGroup.ToList();
                        break;

                    case "extra":
                        deckDetail.ExtraDeck = cardGroup.ToList();
                        break;

                    case "side":
                        deckDetail.SideDeck = cardGroup.ToList();
                        break;
                    }
                }

                return(deckDetail);
            }

            return(null);
        }
コード例 #2
0
        public static DeckDetailOutputModel From(DeckDetail model)
        {
            var deck = new DeckDetailOutputModel
            {
                Id            = model.Id,
                Username      = model.Username,
                ThumbnailUrl  = $"/api/images/decks/{model.Id}/thumbnail",
                Name          = model.Name,
                SanitizedName = string.Join("_", model.Name.Split(Path.GetInvalidFileNameChars())),
                Description   = model.Description,
                YoutubeUrl    = model.VideoUrl,
                TotalCards    = model.TotalCards,
                Created       = model.Created,
                Updated       = model.Updated
            };

            return(deck);
        }