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); } }
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()); }