コード例 #1
0
        private void UpdateNotConnected(BkGame bkGame)
        {
            var existBkGame = _freeBkGameList.Get(eg =>
                                                  eg.BkGame.EventName == bkGame.EventName && bkGame.Bookmaker == eg.BkGame.Bookmaker);

            var existsOtherBkGames = GamesComparer.FindBkGames(bkGame, _freeBkGameList.Get())
                                     .Where(fg => fg.BkGame.Bookmaker != bkGame.Bookmaker)
                                     .ToArray();

            if (existsOtherBkGames.Any())
            {
                var game = new Game(bkGame.Group);
                game.AddBkGame(bkGame);
                foreach (var existsOtherBkGame in existsOtherBkGames)
                {
                    game.AddBkGame(existsOtherBkGame);
                }

                _gameList.Add(game);

                var ids = GamesComparer
                          .FindBkGames(bkGame, _freeBkGameList.Get())
                          .Select(g => g.Id);
                _freeBkGameList.Remove(decorator => ids.Contains(decorator.Id));
            }
            else if (existBkGame == null)
            {
                _freeBkGameList.Add(new BkGameDecorator(bkGame));
            }
            else
            {
                existBkGame.Update(bkGame);
            }
        }
コード例 #2
0
        public Game[] AddBkGames(IEnumerable <BkGame> bkGames)
        {
            foreach (var bkGame in bkGames)
            {
                var game = _gameList.Get(g => g.IsSameEvent(bkGame));

                if (game == null)
                {
                    UpdateNotConnected(bkGame);
                }
                else
                {
                    lock (game)
                    {
                        game.UpdateBkGame(bkGame);
                    }
                }
            }

            return(_gameList.Get());
        }