Exemple #1
0
        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));
            }
        }
Exemple #3
0
        public FixtureMapperTests()
        {
            var autoFixture = new AutoFixture.Fixture();

            _competition = autoFixture.Create <Data.Models.Competition>();
            _gameweek    = autoFixture.Create <Gameweek>();
            _homeTeam    = autoFixture.Create <Data.Models.Team>();
            _awayTeam    = autoFixture.Create <Data.Models.Team>();
            _source      = autoFixture.Create <MatchResponse>();

            var mapper = new FixtureMapper(this, this, this);

            _result = mapper.MapAsync(_source).Result;
        }