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