Пример #1
0
 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
     };
 }
Пример #2
0
        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();
            }
        }