public async Task Refresh(int currentGameweek) { using var scope = _logger.AddContext("StateRefresh"); _logger.LogInformation($"Refreshing {currentGameweek}"); var latest = await _fixtureClient.GetFixturesByGameweek(currentGameweek); var fixtureEvents = LiveEventsExtractor.GetUpdatedFixtureEvents(latest, _currentGameweekFixtures, _players, _teams); var finishedFixtures = LiveEventsExtractor.GetProvisionalFinishedFixtures(latest, _currentGameweekFixtures, _teams, _players); _currentGameweekFixtures = latest; var globalSettings = await _settingsClient.GetGlobalSettings(); var after = globalSettings.Players; var priceChanges = PlayerChangesEventsExtractor.GetPriceChanges(after, _players, _teams); var injuryUpdates = PlayerChangesEventsExtractor.GetInjuryUpdates(after, _players, _teams); var newPlayers = PlayerChangesEventsExtractor.GetNewPlayers(after, _players, _teams); _players = after; if (fixtureEvents.Any()) { await _session.Publish(new FixtureEventsOccured(fixtureEvents.ToList())); } if (priceChanges.Any()) { await _session.Publish(new PlayersPriceChanged(priceChanges.ToList())); } if (injuryUpdates.Any()) { await _session.Publish(new InjuryUpdateOccured(injuryUpdates)); } foreach (var fixture in finishedFixtures) { await _session.Publish(new FixtureFinished(fixture)); } if (newPlayers.Any()) { await _session.Publish(new NewPlayersRegistered(newPlayers.ToList())); } }
public static void When_NewAwayGoal_ReturnsAwayTeamGoalEvent() { var current = new List <Fixture> { TestBuilder.NoGoals(fixtureCode: 1) }; var latest = new List <Fixture> { TestBuilder.AwayTeamGoal(fixtureCode: 1, goals: 1) }; var events = LiveEventsExtractor.GetUpdatedFixtureEvents(latest, current); var awayGoalEvent = events.First(); Assert.Equal(123, awayGoalEvent.StatMap[StatType.GoalsScored].First().PlayerId); Assert.Equal(PlayerEvent.TeamType.Away, awayGoalEvent.StatMap[StatType.GoalsScored].First().Team); }
public async Task Refresh(int currentGameweek) { var latest = await _fixtureClient.GetFixturesByGameweek(currentGameweek); var fixtureEvents = LiveEventsExtractor.GetUpdatedFixtureEvents(latest, _currentGameweekFixtures); var finishedFixtures = LiveEventsExtractor.GetProvisionalFinishedFixtures(latest, _currentGameweekFixtures, _teams, _players); _currentGameweekFixtures = latest; var globalSettings = await _settingsClient.GetGlobalSettings(); var after = globalSettings.Players; var priceChanges = PlayerChangesEventsExtractor.GetPriceChanges(after, _players, _teams); var injuryUpdates = PlayerChangesEventsExtractor.GetInjuryUpdates(after, _players, _teams); _players = after; if (fixtureEvents.Any()) { var fixtureUpdates = new FixtureUpdates { CurrentGameweek = _currentGameweek.Value, Teams = _teams, Players = _players, Events = fixtureEvents }; await _mediator.Publish(new FixtureEventsOccured(fixtureUpdates)); } if (priceChanges.Any()) { await _mediator.Publish(new PriceChangeOccured(priceChanges)); } if (injuryUpdates.Any()) { await _mediator.Publish(new InjuryUpdateOccured(injuryUpdates)); } if (finishedFixtures.Any()) { await _mediator.Publish(new FixturesFinished(finishedFixtures.ToList())); } }
public static void When_NewAwayGoal_ReturnsAwayTeamGoalEvent() { var current = new List <Fixture> { TestBuilder.NoGoals(fixtureCode: 1) }; var latest = new List <Fixture> { TestBuilder.AwayTeamGoal(fixtureCode: 1, goals: 1, minutes: 72) }; var events = LiveEventsExtractor.GetUpdatedFixtureEvents(latest, current, new List <Player> { TestBuilder.Player() }, new List <Team> { TestBuilder.HomeTeam(), TestBuilder.AwayTeam() }); var awayGoalEvent = events.First(); Assert.Equal(123, awayGoalEvent.StatMap[StatType.GoalsScored].First().Player.Id); Assert.Equal(TeamType.Away, awayGoalEvent.StatMap[StatType.GoalsScored].First().Team); Assert.Equal(72, awayGoalEvent.FixtureScore.Minutes); }
private static void AssertEmpty(ICollection <Fixture> latest, ICollection <Fixture> current) { var events = LiveEventsExtractor.GetUpdatedFixtureEvents(latest, current); Assert.Empty(events); }
private static void AssertEmpty(ICollection <Fixture> latest, ICollection <Fixture> current) { var events = LiveEventsExtractor.GetUpdatedFixtureEvents(latest, current, new List <Player>(), new List <Team>()); Assert.Empty(events); }