private async Task <Fixture> BuildFixtureAsync(Match match) { var competition = await _competitionDb.RetrieveBySourceId(match.Competition.Id); var homeTeam = await _teamDb.RetrieveBySourceId(match.HomeTeam.Id); var awayTeam = await _teamDb.RetrieveBySourceId(match.AwayTeam.Id); var gameweek = await _gameweekDb.Retrieve(match.Date); Data.Models.Team winner = match.Score.Winner == "HOME_TEAM" ? homeTeam : match.Score.Winner == "AWAY_TEAM" ? awayTeam : null; if (homeTeam == null || awayTeam == null) { return(null); } return(new Fixture { OpenFootyId = match.Id, Date = match.Date, CompetitionId = competition.Id, Competition = competition, HomeTeam = homeTeam, HomeTeamId = homeTeam.Id, HomeTeamScore = match.Score.FullTime.HomeTeam ?? 0, AwayTeam = awayTeam, AwayTeamId = awayTeam.Id, AwayTeamScore = match.Score.FullTime.AwayTeam ?? 0, WinnerId = winner?.Id, GameweekId = gameweek.Id, IsResult = match.Status == "FINISHED" }); }
private async Task <Fixture> BuildFixtureAsync(Match match) { var competition = await _competitionDb.RetrieveBySourceId(match.LeagueId); var homeTeam = await GetTeamOrCreate(match.HomeTeam); var awayTeam = await GetTeamOrCreate(match.AwayTeam); var matchDate = DateTimeOffset.FromUnixTimeSeconds(match.EventDate).UtcDateTime; var gameweek = await _gameweekDb.Retrieve(matchDate); Data.Models.Team winner = match.GoalsHomeTeam > match.GoalsAwayTeam ? homeTeam : match.GoalsAwayTeam > match.GoalsHomeTeam ? awayTeam : null; if (homeTeam == null || awayTeam == null) { return(null); } return(new Fixture { OpenFootyId = match.Id, Date = matchDate, CompetitionId = competition.Id, Competition = competition, HomeTeam = homeTeam, HomeTeamId = homeTeam.Id, HomeTeamScore = match.GoalsHomeTeam ?? 0, AwayTeam = awayTeam, AwayTeamId = awayTeam.Id, AwayTeamScore = match.GoalsAwayTeam ?? 0, WinnerId = winner?.Id, GameweekId = gameweek.Id, IsResult = match.Status == "FT" }); async Task <Data.Models.Team> GetTeamOrCreate(Data.Models.ApiFootball.Team team) { var result = await _teamDb.RetrieveBySourceId(team.Id); if (result == null) { var dbTeam = new Data.Models.Team { OpenFootyId = team.Id, Name = team.Name, Badge = team.Logo }; _teamDb.Save(dbTeam); } return(await _teamDb.RetrieveBySourceId(team.Id)); } }