Пример #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()));
        }
    }
        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);
        }
Пример #3
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()));
            }
        }
Пример #4
0
    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);
        }
Пример #6
0
    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);
    }