private void UpdateDuels() { int lastId = 0; if (_duels.Count > 0) { lastId = _duels.Max(s => s.Id); } var newDuels = _duelRepository.GetAllDuelsWithWinner().Where(s => s.Id > lastId).ToList(); _duels.AddRange(newDuels); }
public BoardLoader(IPrizeManager prizeManager, ISolutionRepository solutionRepository, IPurchaseRepository purchaseRepository, IUserRepository userRepository, IDuelRepository duelRepository, ApplicationDbContext dbContext) { _prizeManager = prizeManager; _solutionRepository = solutionRepository; _purchaseRepository = purchaseRepository; _userRepository = userRepository; _duelRepository = duelRepository; _dbContext = dbContext; Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); lock (dbContext) { _solutions = _solutionRepository.GetAll().Where(s => s.IsCorrect).ToList(); _duels = _duelRepository.GetAllDuelsWithWinner().ToList(); _prizes = _prizeManager.GetAllPrizes().Result; _purchases = _purchaseRepository.GetAll().ToList(); _users = _userRepository.GetAll().ToList(); UpdateLeaderBoard(); } _timer = new Timer(state => { try { lock (dbContext) { SwitchBoard(); switch (Board) { case BoardEnum.LeaderBoard: UpdateLeaderBoard(); Changed(nameof(LeaderBoard)); break; case BoardEnum.Prizes: { GetNewPurchases(); UpdatePrizes(); Changed(nameof(PrizesForPoints)); break; } case BoardEnum.TodayPrizes: { GetNewPurchases(); UpdateTodayPrizes(); Changed(nameof(TodaysPrize)); break; } case BoardEnum.WeekPrizes: { GetNewPurchases(); UpdateWeekPrizes(); Changed(nameof(WeeksPrize)); break; } case BoardEnum.Duels: { UpdateDuelsStatistics(); Changed(nameof(DuelsStatistics)); break; } } Changed(nameof(Board)); Changed(nameof(LastUpdate)); PushUpdates(); } } catch (Exception ex) { }; }, null, 0, 15000); }