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 async Task HandleForTeam(FixtureUpdates updates, SlackTeam slackTeam) { var slackUsers = await GetSlackUsers(slackTeam); var entries = await _leagueEntriesByGameweek.GetEntriesForGameweek(updates.CurrentGameweek, (int)slackTeam.FplbotLeagueId); var transfers = await _transfersByGameWeek.GetTransfersByGameweek(updates.CurrentGameweek, (int)slackTeam.FplbotLeagueId); var context = new GameweekLeagueContext { Players = updates.Players, Teams = updates.Teams, Users = slackUsers, GameweekEntries = entries, SlackTeam = slackTeam, TransfersForLeague = transfers }; var formattedStr = GameweekEventsFormatter.FormatNewFixtureEvents(updates.Events.ToList(), context); await _publisher.PublishToWorkspace(slackTeam.TeamId, slackTeam.FplBotSlackChannel, formattedStr.ToArray()); }