コード例 #1
0
        private bool HandleAttemptForTimeCondition(Condition condition, PlayerCareer playerCareer)
        {
            bool     attemptResult   = false;
            DateTime attemptDateTime = (DateTime.Now).RoundDateTime();

#warning TODO: handle Condition_Time
            if (true)
            {
                attemptResult = true;

                SuccessfulPlayerAttempt newSuccessfullAttempt = new SuccessfulPlayerAttempt()
                {
                    AttemptDateTime = attemptDateTime,
                    ConditionId     = condition.Id,
                    InputedValue    = String.Empty,
                    PlayerCareerId  = playerCareer.Id
                };
                SuccessfullPlayerAttemptRepository.Insert(newSuccessfullAttempt);

                IList <long> userCompleterIds = new List <long>();

                #region Creating Statistic entities

                List <DateTime> previousTaskEndDTs = TeamGameTaskStatisticRepository.GetAll()
                                                     .Where(r => r.TeamId == playerCareer.TeamId)
                                                     .Select(r => r.GameTaskEndDateTime)
                                                     .Distinct().ToList();
                DateTime gameTaskStartTime = previousTaskEndDTs.Count > 0 ? previousTaskEndDTs.Max() : condition.GameTask.Game.StartDate;

                IList <PlayerGameTaskStatistic> newPlayerGameTaskStatistics = new List <PlayerGameTaskStatistic>();
                foreach (var item in playerCareer.Team.PlayerCareers)
                {
                    newPlayerGameTaskStatistics.Add(new PlayerGameTaskStatistic(condition.GameTaskId,
                                                                                item.Id, gameTaskStartTime, attemptDateTime, (condition.Points ?? 0)));
                    userCompleterIds.Add(item.UserId);
                }
                PlayerGameTaskStatisticRepository.AddRange(newPlayerGameTaskStatistics);

                TeamGameTaskStatistic newTeamGameTaskStatistic = new TeamGameTaskStatistic(condition.GameTaskId,
                                                                                           playerCareer.TeamId, gameTaskStartTime, attemptDateTime, (condition.Points ?? 0));
                TeamGameTaskStatisticRepository.Insert(newTeamGameTaskStatistic);

                #endregion

                UowManager.Current.Completed += (sender, e) =>
                {
                    StatisticsChangesNotifier.RaiseOnGameTaskCompleted(new GameTaskCompletedMessage(condition.GameTaskId, userCompleterIds));
                };
            }
            return(attemptResult);
        }