Пример #1
0
    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()));
        }
    }
Пример #2
0
        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()));
            }
        }