Exemplo n.º 1
0
        protected async Task <List <Game> > Resolve(List <GameInfo> gameInfos, IGameStorageReader storage)
        {
            var teamNames = gameInfos.Select(x => x.TeamName1).ToHashSet();

            teamNames.UnionWith(gameInfos.Select(x => x.TeamName2));

            var teamNamesToResolve = teamNames.Where(x => !_teamsLocalCache.ContainsKey(x)).ToList();
            var resolvedTeams      = await storage.ResolveTeamByName(teamNamesToResolve, _sportId);

            foreach (var rt in resolvedTeams)
            {
                _teamsLocalCache.TryAdd(rt.Key, rt.Value);
            }

            var retVal = new List <Game>();

            foreach (var gd in gameInfos)
            {
                var game = new Game()
                {
                    SportTypeId       = _sportId,
                    CompetitionTypeId = _competitinoTypeId,
                    Time = gd.Time
                };

                if (string.Compare(gd.TeamName1, gd.TeamName2) >= 0)
                {
                    game.Team1Id = _teamsLocalCache[gd.TeamName1].Id;
                    game.Team2Id = _teamsLocalCache[gd.TeamName2].Id;
                }
                else
                {
                    game.Team1Id = _teamsLocalCache[gd.TeamName2].Id;
                    game.Team2Id = _teamsLocalCache[gd.TeamName1].Id;
                }

                retVal.Add(game);
            }

            return(retVal);
        }
Exemplo n.º 2
0
        public async Task CheckUpdate(IEventQueueWriter queue, IGameStorageReader storage, CancellationToken cancellationToken)
        {
            var dt         = DateTime.UtcNow;
            var games3days = new List <Game>();

            for (int i = 0; i < 3; i++)
            {
                var date            = (new DateTime(dt.Year, dt.Month, dt.Day)).AddDays(i);
                var gameDescriptors = await GetInfoByDate(date);

                var filteredGameDescriptors = FilterLocal(gameDescriptors);
                var games = await Resolve(filteredGameDescriptors, storage);

                games3days.AddRange(games);
            }

            if (games3days.Any())
            {
                await queue.Enqueue(games3days);
            }
        }
Exemplo n.º 3
0
        public async Task CheckUpdate(IEventQueueWriter queue, IGameStorageReader storage, CancellationToken cancellationToken)
        {
            var index1 = _rnd.Next(0, 9);
            var index2 = _rnd.Next(0, 8);

            if (index1 == index2)
            {
                index2 = 9;
            }

            var teams = (await storage.ResolveTeamByName(new[] { _teams[index1], _teams[index2] }, Guid.Empty))
                        .Select(x => x.Value)
                        .ToArray();

            var game = new Game
            {
                CompetitionTypeId = "wc",
                Team1Id           = teams[0].Id,
                Team2Id           = teams[1].Id,
                Time = DateTime.UtcNow.AddSeconds(5)
            };

            await queue.Enqueue(new[] { game });
        }