//public DashboardDetailsCardResponse()
        //{
        //}

        public static DashboardDetailsCardResponse Build(string userId, Dictionary <string, ConfigModelDeck> dictDecks,
                                                         Card c, Dictionary <string, IDeck> decks, KeyValuePair <string, CardRequiredInfoByDeck>[] decksInfo,
                                                         UtilColors utilColors)
        {
            var ret = new DashboardDetailsCardResponse();

            var missing = decksInfo.Where(i => decks.ContainsKey(i.Key) == false).ToArray();

            if (missing.Any())
            {
                Log.Error("User {userId} Error in DashboardDetailsCardResponse: Cannot find these decks: <{ids}>. Original ids: <{ids2}>",
                          userId, string.Join(",", missing.Select(x => x.Key)), string.Join(",", missing.Select(x => x.Value.DeckId)));
            }

            ret.InfoByDeck = decksInfo
                             .Where(i => missing.Any(x => x.Key == i.Key) == false)
                             .Select(i => new DashboardDetailsCardDto
            {
                DeckId            = i.Key,
                DeckName          = decks[i.Key].Name,
                NbMain            = i.Value.ByCard[c.name].NbRequiredMain,
                NbSideboard       = i.Value.ByCard[c.name].NbRequiredSideboard,
                DeckColor         = utilColors.FromDeck(decks[i.Key]),
                DeckDateCreated   = dictDecks[i.Key].DateCreatedUtc,
                DeckScraperTypeId = decks[i.Key].ScraperType.Id,
            })
                             .ToArray();

            return(ret);
        }
 public AutoMapperRawDeckToColorConverter(CacheSingleton <Dictionary <int, Card> > cacheCards, UtilColors utilColors)
 {
     this.dictAllCards = cacheCards.Get();
     this.utilColors   = utilColors;
 }
 public AutoMapperRawDeckToColorConverter(UtilColors utilColors)
 {
     this.utilColors = utilColors;
 }
Пример #4
0
        public MapperProfileWebModels(
            UtilColors utilColors,
            AutoMapperRawDeckToColorConverter rawDeckToColor,
            AutoMapperIntToCardArtConverter intToCardArt,
            AutoMapperRawDeckConverter rawDeckConverter,
            AutoMapperManaCurveConverter manaCurveConverter,
            AutoMapperCollationToSetConverter collationToSet)
        {
            CreateMap <Card, CardDto>()
            .ForMember(i => i.IdArena, i => i.MapFrom(x => x.grpId));

            CreateMap <Card, CardDtoFull>();
            CreateMap <CardDtoFull, Card>();

            CreateMap <CardWithAmount, CardWithAmountDto>()
            .ForMember(i => i.IdArena, i => i.MapFrom(x => x.Card.grpId))
            .ForMember(i => i.Name, i => i.MapFrom(x => x.Card.name))
            .ForMember(i => i.Set, i => i.MapFrom(x => x.Card.set))
            .ForMember(i => i.Rarity, i => i.MapFrom(x => x.Card.GetRarityEnum(false).ToString()))
            .ForMember(i => i.ImageCardUrl, i => i.MapFrom(x => x.Card.imageCardUrl))
            //.ForMember(i => i.ImageArtUrl, i => i.MapFrom(x => x.Card.imageArtUrl))
            .ForMember(i => i.Color, i => i.MapFrom(x => x.Card.type.Contains("Land") ? "Land" : x.Card.colors == null ? "" : string.Join("", x.Card.colors)))
            ;

            //CreateMap<CardWithAmountDto, CollectionCardDto>();

            CreateMap <CardWithAmount, CollectionCardDto>()
            .IncludeBase <CardWithAmount, CardWithAmountDto>()
            .ForMember(i => i.NotInBooster, i => i.MapFrom(x => x.Card.notInBooster));


            //CreateMap<DateSnapshotInfo, GetUserHistoryDto>();
            //CreateMap<DateSnapshotDiff, GetUserHistoryDto>();
            ////CreateMap<UserHistorySnapshot, GetUserHistoryDto>()
            ////    .ForMember(i => i.GemsChange, i => i.MapFrom(x => x.Diff.GemsChange))
            ////    .ForMember(i => i.GoldChange, i => i.MapFrom(x => x.Diff.GoldChange))
            ////    .ForMember(i => i.NewCards, i => i.MapFrom(x => x.Diff.NewCards))
            ////    .ForMember(i => i.VaultProgress, i => i.MapFrom(x => x.Diff.VaultProgress))
            ////    .ForMember(i => i.VaultProgress, i => i.MapFrom(x => x.Diff.WildcardsChange));

            CreateMap <DeckCard, DeckCardDto>()
            .IncludeBase <CardWithAmount, DeckCardDto>();

            CreateMap <CardWithAmount, DeckCardDto>()
            .ForMember(i => i.Name, i => i.MapFrom(x => x.Card.name))
            .ForMember(i => i.ImageCardUrl, i => i.MapFrom(x => x.Card.imageCardUrl))
            .ForMember(i => i.ImageThumbnail, i => i.MapFrom(x => new Util().GetThumbnailUrl(x.Card.imageArtUrl)))
            .ForMember(i => i.Rarity, i => i.MapFrom(x => x.Card.GetRarityEnum(false).ToString()))
            .ForMember(i => i.Type, i => i.MapFrom(x => x.Card.GetSimpleType()))
            .ForMember(i => i.Set, i => i.MapFrom(x => x.Card.set))
            .ForMember(i => i.ManaCost, i => i.MapFrom(x => x.Card.mana_cost))
            .ForMember(i => i.Cmc, i => i.MapFrom(x => x.Card.cmc))
            .ForMember(i => i.Color, i => i.MapFrom(x => x.Card.type.Contains("Land") ? "Land" : x.Card.colors == null ? "" : string.Join("", x.Card.colors)))
            .ForMember(m => m.NbMissing, o => o.Ignore());

            //new DeckCardDto
            //{
            //    Name = i.Card.name,
            //    ImageCardUrl = i.Card.imageCardUrl,//.images["normal"],
            //                                       //ImageArtUrl = i.Card.imageArtUrl,//.images["normal"],
            //    Rarity = i.Card.GetRarityEnum(false).ToString(),
            //    Type = i.Card.GetSimpleType(),
            //    Amount = i.Amount,
            //    NbMissing =
            //        hCards[i.IsSideboard].Contains(i.Card.name) ? 0 : (deckInfo.CardsRequired.ByCard.ContainsKey(i.Card) ?
            //        (i.IsSideboard ? deckInfo.CardsRequired.ByCard[i.Card].NbMissingSideboard : deckInfo.CardsRequired.ByCard[i.Card].NbMissingMain) : 0),
            //}

            CreateMap <MatchResult, MatchDto>()
            .IncludeBase <MatchResult, MatchDtoLightweight>();

            CreateMap <MatchResult, MatchDtoLightweight>()
            .ForMember(i => i.OpponentName, i => i.MapFrom(x => x.Opponent.ScreenName))
            .ForMember(i => i.FirstTurn, i => i.MapFrom(x => x.Games.Any() == false ? FirstTurnEnum.Unknown.ToString() : x.Games.First().FirstTurn.ToString()))
            .ForMember(i => i.OpponentRank, i => i.MapFrom(x => $"{x.Opponent.RankingClass}_{x.Opponent.RankingTier}"))
            //.ForMember(i => i.Outcome, i => i.MapFrom(x => string.Join('-', x.Games.Select(y => y.Outcome.ToString()[0]))))
            .ForMember(i => i.OpponentDeckColors, i => i.ConvertUsing(utilColors, x => x.GetOpponentCardsSeen()))
            .ForMember(m => m.RankDelta, o => o.Ignore());

            // ConfigModelRawDeck to DeckDto directly
            CreateMap <ConfigModelRawDeck, SimpleDeckDto>()
            .ForMember(i => i.Main, i => i.MapFrom(x => x.CardsMain))
            .ForMember(i => i.Sideboard, i => i.MapFrom(x => x.CardsSideboard))
            .ForMember(i => i.Colors, i => i.ConvertUsing(rawDeckToColor, x => x))
            .ForMember(i => i.DeckImage, i => i.ConvertUsing(intToCardArt, x => x.DeckTileId));

            CreateMap <GameDetail, GameDetailDto>();

            CreateMap <CardTurnAction, CardTurnActionDto>()
            .ForMember(i => i.Card, i => i.MapFrom(x => x.CardGrpId));

            CreateMap <Dictionary <int, int>, ICollection <CardWithAmountDto> >().ConvertUsing(rawDeckConverter);

            CreateMap <ConfigModelRankInfo, RankInfoDto>();

            CreateMap <HistorySummaryForDate, GetUserHistorySummaryDto>()
            .ForMember(i => i.Wins, i => i.MapFrom(x => x.OutcomesByMode.Values.Sum(y => y.Wins)))
            .ForMember(i => i.Losses, i => i.MapFrom(x => x.OutcomesByMode.Values.Sum(y => y.Losses)))
            .ForMember(i => i.BoostersChange, i => i.MapFrom(x => x.BoostersChange.Select(b => new KeyValuePair <string, int>(b.Key, b.Value))));

            //CreateMap<DateSnapshotInfo, GetUserHistoryForDateResponseInfo>()
            //    .ForMember(i => i.ConstructedRank, i => i.MapFrom(x => x.RankSynthetic.FirstOrDefault(y => y.Format == RankFormatEnum.Constructed) ?? new ConfigModelRankInfo(RankFormatEnum.Constructed)))
            //    .ForMember(i => i.LimitedRank, i => i.MapFrom(x => x.RankSynthetic.FirstOrDefault(y => y.Format == RankFormatEnum.Limited) ?? new ConfigModelRankInfo(RankFormatEnum.Limited)))
            //    .ForMember(i => i.Gold, i => i.MapFrom(x => x.Inventory.Gold))
            //    .ForMember(i => i.Gems, i => i.MapFrom(x => x.Inventory.Gems))
            //    .ForMember(i => i.Wildcards, i => i.MapFrom(x => x.Inventory.Wildcards))
            //    .ForMember(i => i.VaultProgress, i => i.MapFrom(x => x.Inventory.VaultProgress));

            //CreateMap<DateSnapshotDiff, GetUserHistoryForDateResponseDiff>();

            CreateMap <CardForDraftPick, CardForDraftPickDto>()
            .ForMember(i => i.IdArena, i => i.MapFrom(x => x.grpId))
            .ForMember(i => i.ManaCost, i => i.MapFrom(x => x.mana_cost));

            CreateMap <int, CardDto>()
            .ConvertUsing((i, dto, ctx) => ctx.Mapper.Map <CardDto>(ctx.Mapper.Map <Card>(i)));

            CreateMap <MtgaDeckSummary, MtgaDeckSummaryDto>()
            .ForMember(i => i.FirstPlayed, i => i.MapFrom(x => x.FirstPlayed.ToString("yyyy-MM-dd")))
            .ForMember(i => i.LastPlayed, i => i.MapFrom(x => x.LastPlayed.ToString("yyyy-MM-dd")));
            //.ForMember(i => i.DeckColor, i => i.ConvertUsing(rawDeckToColorConverter, x => x.DeckUsed));

            CreateMap <MtgaDeckDetail, MtgaDeckDetailDto>()
            //.ForMember(i => i.FirstPlayed, i => i.MapFrom(x => x.FirstPlayed.ToString("yyyy-MM-dd")))
            //.ForMember(i => i.LastPlayed, i => i.MapFrom(x => x.LastPlayed.ToString("yyyy-MM-dd")));
            //.ForMember(i => i.DeckColor, i => i.ConvertUsing(rawDeckToColorConverter, x => x.DeckUsed))
            //.ForMember(i => i.CardsMain, i => i.MapFrom(x => x.DeckUsed.CardsMain))
            //.ForMember(i => i.CardsSideboard, i => i.MapFrom(x => x.DeckUsed.CardsSideboard));
            .ForMember(i => i.CardsMain, i => i.MapFrom(x => Mapper.Map <ICollection <CardWithAmount> >(x.CardsMain)))
            .ForMember(i => i.CardsSideboard, i => i.MapFrom(x => Mapper.Map <ICollection <CardWithAmount> >(x.CardsSideboard)))
            .ForMember(i => i.ManaCurve, i => i.ConvertUsing(manaCurveConverter, x => x.CardsMain));

            CreateMap <MtgaDeckAnalysis, MtgaDeckAnalysisDto>();
            CreateMap <MtgaDeckAnalysisMatchInfo, MtgaDeckAnalysisMatchInfoDto>();

            CreateMap <PlayerProgress, PlayerProgressDto>();

            CreateMap <Inventory, InventoryResponseDto>()
            .ForMember(i => i.Boosters, i => i.MapFrom(x => x.Boosters));

            CreateMap <InventoryBooster, InventoryBoosterDto>()
            .ForMember(i => i.Set, i => i.ConvertUsing(collationToSet, x => x.CollationId));

            CreateMap <DeckSummary, DeckSummaryResponseDto>();
            CreateMap <DeckTrackedSummary, DeckTrackedSummaryResponseDto>();

            CreateMap <CardMissingDetailsModel, CardMissingDetailsModelResponseDto>();
            CreateMap <InfoCardMissingSummary, InfoCardMissingSummaryResponseDto>();

            CreateMap <AccountModel, AccountResponse>()
            .ForMember(m => m.IsAuthenticated, o => o.Ignore())
            .ForMember(m => m.ResponseStatus, o => o.Ignore())
            .ForMember(m => m.Message, o => o.Ignore());

            CreateMap <EconomyEvent, EconomyEventDto>()
            .ForMember(i => i.Context, i => i.MapFrom(x => x.Context.Replace("PlayerInventory.", "")));

            CreateMap <EconomyEventChange, EconomyEventChangeDto>();

            CreateMap <Rank, RankDto>();
            CreateMap <RankDelta, RankDeltaDto>();
        }