private StatisticalData Convert(PlayerInfo a) { return new StatisticalData { BattleAvgXp = a.BattleAvgXp, Battles = a.Battles, DamageDealt = a.DamageDealt, Frags = a.Frags, HitsPercents = a.HitsPercents, MaxXp = a.MaxXp, Date = a.Time.Date, PlayerId = a.PlayerId, WinsPercents = ((double) a.Wins)/(a.Wins + a.Losses + a.Draws)*100 }; }
private void OnMessage(PlayerInfo message) { using (var unitOfWork = _unitOfWorkFactory.Create()) { var newStatisticalData = Convert(message); _statisticDataRepository.Add(newStatisticalData); _periods.ForEach(period => { var oldStatisticalData = _query.For<StatisticalData>().With(new PlayerIdAndDateCriterion(message.PlayerId, newStatisticalData.Date.AddDays(-period.DaysCount))); if (oldStatisticalData == null) return; var oldDynamicData = _query.For<DynamicData>().With(new PlayerIdAndPeriodCriterion(message.PlayerId, period.Id)); if (oldDynamicData != null) { oldDynamicData.Update(newStatisticalData, oldStatisticalData); return; } var nowPeriodData = new DynamicData(message.PlayerId, period); nowPeriodData.Update(newStatisticalData, oldStatisticalData); _dynamicDataRepository.Add(nowPeriodData); }); unitOfWork.Commit(); } }