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