public GetUserHistoryForDateResponse(GetUserHistoryForDateResponseData history)
 {
     History2 = history;
 }
示例#2
0
        public GetUserHistoryForDateResponse(DateTime date, ICollection <MatchResult> matches, ICollection <EconomyEvent> economyEvents, ICollection <RankDelta> rankUpdates,
                                             ICollection <CardWithAmountDto> newCardsDeprecated)
        {
            var economyEventsDto = Mapper.Map <ICollection <EconomyEventDto> >(economyEvents);

            // V2
            if (date < dateNewHistory)
            {
                if (newCardsDeprecated.Count > 0)
                {
                    economyEventsDto = new[]
                    {
                        new EconomyEventDto
                        {
                            DateTime = date,
                            Context  = "New cards",
                            NewCards = newCardsDeprecated,
                        }
                    }
                }
                ;
                else
                {
                    economyEventsDto = new[]
                    {
                        new EconomyEventDto
                        {
                            DateTime = date,
                            Context  = "N/A",
                        }
                    }
                };
            }

            History2 = new GetUserHistoryForDateResponseData(date, matches)
            {
                EconomyEvents = economyEventsDto,
                RankUpdates   = Mapper.Map <ICollection <RankDeltaDto> >(rankUpdates),
                Matches       = Mapper.Map <ICollection <MatchDto> >(matches),
            };

            // ASSOCIATE RANK CHANGES WITH MATCHES
            if (rankUpdates.Any())
            {
                foreach (var m in History2.Matches)
                {
                    var matchEnd = m.StartDateTime.AddSeconds(m.SecondsCount);

                    var bestRankUpdated = rankUpdates
                                          .Select(i => new { timeDiff = Math.Abs((i.DateTime - matchEnd).TotalSeconds), i.DeltaSteps, i.RankEnd.Format })
                                          .OrderBy(i => i.timeDiff)
                                          .First();

                    if (bestRankUpdated.timeDiff < 5d)
                    {
                        m.RankDelta = new MatchRankDeltaDto
                        {
                            Format     = bestRankUpdated.Format.ToString(),
                            StepsDelta = bestRankUpdated.DeltaSteps,
                        };
                    }


                    // Patch brought back from V1
                    if (m.DeckUsed == null)
                    {
                        m.DeckUsed = new SimpleDeckDto();
                    }
                }
            }
        }
    }