public void ProcessDayChange() { if (GameHelper.IsDayChange) { return; } try { using (var trs = transactionScopeProvider.CreateTransactionScope(IsolationLevel.Serializable, TimeSpan.FromMinutes(8))) { GameHelper.IsDayChange = true; processCitizens(); var configuration = configurationRepository.GetConfiguration(); DebugLogger log = new DebugLogger(); #if !DEBUG if ((DateTime.Now - configuration.LastDayChange).TotalHours < 15) { throw new Exception("Last day change was less than 15 hrs ago!"); } #endif contractService.ProcessDayChange(); congressCandidateService.ProcessDayChange(GameHelper.CurrentDay + 1); log.Log("congressCandidateService - {0}", System.Transactions.Transaction.Current.TransactionInformation.Status); partyService.ProcessDayChange(GameHelper.CurrentDay + 1); log.Log("partyService - {0}", System.Transactions.Transaction.Current.TransactionInformation.Status); countryService.ProcessDayChange(GameHelper.CurrentDay + 1); log.Log("countryService - {0}", System.Transactions.Transaction.Current.TransactionInformation.Status); congressVotingService.ProcessDayChange(GameHelper.CurrentDay + 1); log.Log("congressVotingService - {0}", System.Transactions.Transaction.Current.TransactionInformation.Status); battleService.ProcessDayChange(GameHelper.CurrentDay + 1); log.Log("battleService - {0}", System.Transactions.Transaction.Current.TransactionInformation.Status); regionService.ProcessDayChange(GameHelper.CurrentDay + 1); log.Log("regionService - {0}", System.Transactions.Transaction.Current.TransactionInformation.Status); companyService.ProcessDayChange(GameHelper.CurrentDay + 1); log.Log("companyService - {0}", System.Transactions.Transaction.Current.TransactionInformation.Status); embargoService.ProcessDayChange(GameHelper.CurrentDay + 1); log.Log("embargoService - {0}", System.Transactions.Transaction.Current.TransactionInformation.Status); hotelService.ProcessDayChange(GameHelper.CurrentDay + 1); log.Log("hotelService - {0}", System.Transactions.Transaction.Current.TransactionInformation.Status); houseService.ProcessDayChange(GameHelper.CurrentDay + 1); log.Log("hotelService - {0}", System.Transactions.Transaction.Current.TransactionInformation.Status); employeeService.ProcessDayChange(GameHelper.CurrentDay + 1); warService.ProcessDayChange(GameHelper.CurrentDay + 1); mppService.ProcessDayChange(GameHelper.CurrentDay + 1); configuration.CurrentDay++; configuration.LastDayChange = DateTime.Now.Date; newDayRepository.AddInformationAboutNewDay(GameHelper.CurrentDay); GameHelper.CurrentDay = configuration.CurrentDay; GameHelper.LastDayChangeTime = configuration.LastDayChange; configurationRepository.SaveChanges(); trs.Complete(); } } finally { GameHelper.IsDayChange = false; } ReloadPersistent(); }