Example #1
0
        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);
        }
Example #2
0
        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);
        }