public void Run(Model.MlbStatsContext context)
        {
            Console.WriteLine($"TeamsProcessor - {this.Season}");

            var url     = Feeds.TeamsFeed.GetFeedUrl(this.Season);
            var rawJson = JsonUtility.GetRawJsonFromUrl(url);
            var feed    = Feeds.TeamsFeed.FromJson(rawJson);

            var dbAssociations = context.Associations.ToDictionary(x => x.AssociationID);
            var dbLeagues      = context.Leagues.ToDictionary(x => x.LeagueID);
            var dbDivisions    = context.Divisions.ToDictionary(x => x.DivisionID);
            var dbVenues       = context.Venues.ToDictionary(x => x.VenueID);
            var dbTeams        = context.Teams.ToDictionary(x => x.TeamID);

            var dbVenueSeasons       = context.VenueSeasons.Where(x => x.Season == this.Season).ToDictionary(x => x.VenueID);
            var dbAssociationSeasons = context.AssociationSeasons.Where(x => x.Season == this.Season).ToDictionary(y => y.AssociationID);
            var dbLeagueSeasons      = context.LeagueSeasons.Where(x => x.Season == this.Season).ToDictionary(y => y.LeagueID);
            var dbDivisionSeasons    = context.DivisionSeasons.Where(x => x.Season == this.Season).ToDictionary(y => y.DivisionID);
            var dbTeamSeasons        = context.TeamSeasons.Where(x => x.Season == this.Season).ToDictionary(y => y.TeamID);

            var feedTeams = feed.Teams.OrderBy(x => x.ParentOrgId.HasValue ? 1 : 0).ThenBy(y => y.Sport.Id).ToList();

            foreach (var feedTeam in feedTeams)
            {
                if (!dbAssociations.TryGetValue(feedTeam.Sport.Id.Value, out Model.Association dbAssociation))
                {
                    dbAssociation = new Model.Association
                    {
                        AssociationID   = feedTeam.Sport.Id.Value,
                        AssociationName = feedTeam.Sport.Name,
                        AssociationLink = feedTeam.Sport.Link
                    };
                    dbAssociations.Add(dbAssociation.AssociationID, dbAssociation);
                    context.Associations.Add(dbAssociation);
                }

                Model.League dbLeague = null;
                if (feedTeam.League?.Id != null && !dbLeagues.TryGetValue(feedTeam.League.Id.Value, out dbLeague))
                {
                    dbLeague = new Model.League
                    {
                        LeagueID   = feedTeam.League.Id.Value,
                        LeagueName = feedTeam.League.Name,
                        LeagueLink = feedTeam.League.Link
                    };
                    dbLeagues.Add(dbLeague.LeagueID, dbLeague);
                    context.Leagues.Add(dbLeague);
                }

                Model.Division dbDivision = null;
                if (feedTeam.Division?.Id != null && !dbDivisions.TryGetValue(feedTeam.Division.Id.Value, out dbDivision))
                {
                    dbDivision = new Model.Division
                    {
                        DivisionID   = feedTeam.Division.Id.Value,
                        DivisionName = feedTeam.Division.Name,
                        DivisionLink = feedTeam.Division.Link
                    };
                    dbDivisions.Add(dbDivision.DivisionID, dbDivision);
                    context.Divisions.Add(dbDivision);
                }

                Model.Venue dbVenue = null;
                if (feedTeam.Venue?.Id != null && !dbVenues.TryGetValue(feedTeam.Venue.Id.Value, out dbVenue))
                {
                    dbVenue = new Model.Venue
                    {
                        VenueID   = feedTeam.Venue.Id.Value,
                        VenueName = feedTeam.Venue.Name,
                        VenueLink = feedTeam.Venue.Link
                    };
                    dbVenues.Add(dbVenue.VenueID, dbVenue);
                    context.Venues.Add(dbVenue);
                }

                Model.League dbSpringLeague = null;
                if (feedTeam.SpringLeague?.Id != null && !dbLeagues.TryGetValue(feedTeam.SpringLeague.Id.Value, out dbSpringLeague))
                {
                    dbSpringLeague = new Model.League
                    {
                        LeagueID   = feedTeam.SpringLeague.Id.Value,
                        LeagueName = feedTeam.SpringLeague.Name,
                        LeagueLink = feedTeam.SpringLeague.Link
                    };
                    dbLeagues.Add(dbSpringLeague.LeagueID, dbSpringLeague);
                    context.Leagues.Add(dbSpringLeague);
                }

                Model.Team dbParentOrg = null;
                if (feedTeam.ParentOrgId.HasValue && !dbTeams.TryGetValue(feedTeam.ParentOrgId.Value, out dbParentOrg))
                {
                    dbParentOrg = new Model.Team
                    {
                        TeamID       = feedTeam.ParentOrgId.Value,
                        TeamFullName = feedTeam.ParentOrgName
                    };
                    dbTeams.Add(dbParentOrg.TeamID, dbParentOrg);
                    context.Teams.Add(dbParentOrg);
                }

                if (!dbTeams.TryGetValue(feedTeam.Id, out Model.Team dbTeam))
                {
                    dbTeam = new Model.Team
                    {
                        TeamID       = feedTeam.Id,
                        FileCode     = feedTeam.FileCode,
                        FirstSeason  = feedTeam.FirstYearOfPlay,
                        IsActive     = feedTeam.Active,
                        IsAllStar    = feedTeam.IsAllStarTeam,
                        TeamAbbr     = feedTeam.Abbreviation,
                        TeamCode     = feedTeam.TeamCode,
                        TeamFullName = feedTeam.Name,
                        TeamLocation = feedTeam.LocationName,
                        TeamName     = feedTeam.Name,
                    };
                    dbTeams.Add(dbTeam.TeamID, dbTeam);
                    context.Teams.Add(dbTeam);
                }
                else if (this.IsCurrentSeason)                 // ONLY UPDATE TEAM ENTRY IF IT IS THE CURRENT SEASON
                {
                    if (dbTeam.FileCode != feedTeam.FileCode ||
                        dbTeam.FirstSeason != feedTeam.FirstYearOfPlay ||
                        dbTeam.IsActive != feedTeam.Active ||
                        dbTeam.IsAllStar != feedTeam.IsAllStarTeam ||
                        dbTeam.TeamAbbr != feedTeam.Abbreviation ||
                        dbTeam.TeamCode != feedTeam.TeamCode ||
                        dbTeam.TeamFullName != feedTeam.Name ||
                        dbTeam.TeamLocation != feedTeam.LocationName ||
                        dbTeam.TeamName != feedTeam.Name)
                    {
                        dbTeam.FileCode     = feedTeam.FileCode;
                        dbTeam.FirstSeason  = feedTeam.FirstYearOfPlay;
                        dbTeam.IsActive     = feedTeam.Active;
                        dbTeam.IsAllStar    = feedTeam.IsAllStarTeam;
                        dbTeam.TeamAbbr     = feedTeam.Abbreviation;
                        dbTeam.TeamCode     = feedTeam.TeamCode;
                        dbTeam.TeamFullName = feedTeam.Name;
                        dbTeam.TeamLocation = feedTeam.LocationName;
                        dbTeam.TeamName     = feedTeam.Name;
                    }
                }

                // ENTER SEASON BASED PROCESSING. CURRENT DATA CAN BE UPDATED ABOVE. SEASON BASED DATA SHOULD NEVER NEED TO BE UPDATED (FOR LEAGUE STRUCTURE)

                Model.VenueSeason dbVenueSeason = null;
                if (feedTeam.Venue?.Id != null && !dbVenueSeasons.TryGetValue(feedTeam.Venue.Id.Value, out dbVenueSeason))
                {
                    dbVenueSeason = new Model.VenueSeason
                    {
                        VenueID   = feedTeam.Venue.Id.Value,
                        Season    = this.Season,
                        VenueName = feedTeam.Venue.Name
                    };
                    dbVenueSeasons.Add(feedTeam.Venue.Id.Value, dbVenueSeason);
                    context.VenueSeasons.Add(dbVenueSeason);
                }

                if (!dbAssociationSeasons.TryGetValue(feedTeam.Sport.Id.Value, out Model.AssociationSeason dbAssociationSeason))
                {
                    dbAssociationSeason = new Model.AssociationSeason
                    {
                        Association     = dbAssociation,
                        Season          = this.Season,
                        AssociationName = feedTeam.Sport.Name
                    };
                    dbAssociationSeasons.Add(dbAssociation.AssociationID, dbAssociationSeason);
                    context.AssociationSeasons.Add(dbAssociationSeason);
                }

                Model.LeagueSeason dbLeagueSeason = null;
                if (feedTeam.League?.Id != null && !dbLeagueSeasons.TryGetValue(feedTeam.League.Id.Value, out dbLeagueSeason))
                {
                    dbLeagueSeason = new Model.LeagueSeason
                    {
                        League            = dbLeague,
                        Season            = this.Season,
                        LeagueName        = feedTeam.League.Name,
                        AssociationSeason = dbAssociationSeason
                    };
                    dbLeagueSeasons.Add(dbLeague.LeagueID, dbLeagueSeason);
                    context.LeagueSeasons.Add(dbLeagueSeason);
                }

                Model.LeagueSeason dbSpringLeagueSeason = null;
                if (feedTeam.SpringLeague?.Id != null && !dbLeagueSeasons.TryGetValue(feedTeam.SpringLeague.Id.Value, out dbSpringLeagueSeason))
                {
                    dbSpringLeagueSeason = new Model.LeagueSeason
                    {
                        League            = dbSpringLeague,
                        Season            = this.Season,
                        LeagueName        = feedTeam.SpringLeague.Name,
                        AssociationSeason = dbAssociationSeason
                    };
                    dbLeagueSeasons.Add(dbSpringLeague.LeagueID, dbSpringLeagueSeason);
                    context.LeagueSeasons.Add(dbSpringLeagueSeason);
                }

                Model.DivisionSeason dbDivisionSeason = null;
                if (feedTeam.Division?.Id != null && !dbDivisionSeasons.TryGetValue(feedTeam.Division.Id.Value, out dbDivisionSeason))
                {
                    dbDivisionSeason = new Model.DivisionSeason
                    {
                        Division     = dbDivision,
                        Season       = this.Season,
                        DivisionName = feedTeam.Division.Name,
                        LeagueSeason = dbLeagueSeason
                    };
                    dbDivisionSeasons.Add(dbDivision.DivisionID, dbDivisionSeason);
                    context.DivisionSeasons.Add(dbDivisionSeason);
                }

                Model.TeamSeason dbTeamSeason = null;
                if (!dbTeamSeasons.TryGetValue(feedTeam.Id, out dbTeamSeason))
                {
                    dbTeamSeason = new Model.TeamSeason
                    {
                        Team               = dbTeam,
                        Season             = this.Season,
                        AssociationSeason  = dbAssociationSeason,
                        LeagueSeason       = dbLeagueSeason,
                        DivisionSeason     = dbDivisionSeason,
                        VenueSeason        = dbVenueSeason,
                        FileCode           = feedTeam.FileCode,
                        FullName           = feedTeam.Name,
                        SpringLeagueSeason = dbSpringLeagueSeason,
                        TeamAbbr           = feedTeam.Abbreviation,
                        TeamCode           = feedTeam.TeamCode,
                        TeamLocation       = feedTeam.LocationName,
                        TeamName           = feedTeam.TeamName
                    };
                    dbTeamSeasons.Add(dbTeam.TeamID, dbTeamSeason);
                    context.TeamSeasons.Add(dbTeamSeason);
                }
            }

            var feedChildTeams = feed.Teams.Where(x => x.ParentOrgId.HasValue);

            foreach (var feedChildTeam in feedChildTeams)
            {
                var dbChildTeamSeason = dbTeamSeasons[feedChildTeam.Id];
                if (!dbTeamSeasons.TryGetValue(feedChildTeam.ParentOrgId.Value, out Model.TeamSeason dbParentTeamSeason))
                {
                    dbParentTeamSeason = new Model.TeamSeason
                    {
                        TeamID   = feedChildTeam.ParentOrgId.Value,
                        Season   = this.Season,
                        TeamName = feedChildTeam.ParentOrgName
                    };
                    dbTeamSeasons.Add(feedChildTeam.ParentOrgId.Value, dbParentTeamSeason);
                    context.TeamSeasons.Add(dbParentTeamSeason);
                }
                dbChildTeamSeason.ParentOrgSeason = dbParentTeamSeason;
            }

            context.SaveChanges();
        }
Example #2
0
        public void Run(Model.MlbStatsContext context)
        {
            var dbAssociations         = context.Associations.ToDictionary(x => x.AssociationID);
            var dbSeasonsByAssociation = context.AssociationSeasons.ToLookup(x => x.AssociationID, y => y.Season).ToDictionary(x => x.Key, y => y.ToList());
            var dbGameStatusIds        = context.GameStatusTypes.ToDictionary(x => x.GameStatusCode, y => y.GameStatusTypeID);
            var dbVenues         = context.Venues.ToDictionary(x => x.VenueID);
            var dbSeasonsByVenue = context.VenueSeasons.ToLookup(x => x.VenueID, y => y.Season).ToDictionary(x => x.Key, y => y.ToList());
            var dbTeams          = context.Teams.ToDictionary(x => x.TeamID);
            var dbSeasonsByTeam  = context.TeamSeasons.ToLookup(x => x.TeamID, y => y.Season).ToDictionary(x => x.Key, y => y.ToList());
            var dbAllGameIds     = context.Games.Select(x => x.GameID).ToList();

            var newTeams              = new List <Team>();
            var newTeamSeasons        = new List <TeamSeason>();
            var newVenues             = new List <Venue>();
            var newVenueSeasons       = new List <VenueSeason>();
            var newGames              = new List <Game>();
            var newAssociations       = new List <Association>();
            var newAssociationSeasons = new List <AssociationSeason>();

            foreach (var associationId in this.AssociationIds)
            {
                Console.WriteLine($"GameScheduleProcessor - {this.Year} - {associationId}");

                var dbGames = context.Games.Where(x => x.GameTime.Year == this.Year && x.AssociationID == associationId).ToDictionary(x => x.GameID);

                var url     = Feeds.GameScheduleFeed.GetFeedUrl(this.Year, associationId);
                var rawJson = JsonUtility.GetRawJsonFromUrl(url);
                var feed    = Feeds.GameScheduleFeed.FromJson(rawJson);

                if (feed?.Dates != null && feed.Dates.Count > 0)
                {
                    if (!dbAssociations.TryGetValue(associationId, out Model.Association dbAssociation))
                    {
                        dbAssociation = new Model.Association
                        {
                            AssociationID = associationId,
                            IsEnabled     = false
                        };
                        dbAssociations.Add(associationId, dbAssociation);
                        newAssociations.Add(dbAssociation);
                        dbSeasonsByAssociation[associationId] = new List <int>();
                    }

                    var feedSeasonOptions = feed.Dates.SelectMany(x => x.Games.Select(y => y.Season));
                    foreach (var feedSeasonOption in feedSeasonOptions)
                    {
                        if (!dbSeasonsByAssociation.ContainsKey(associationId))
                        {
                            dbSeasonsByAssociation[associationId] = new List <int>();
                        }
                        if (!dbSeasonsByAssociation[associationId].Contains(feedSeasonOption))
                        {
                            var dbAssociationSeason = new Model.AssociationSeason
                            {
                                AssociationID = associationId,
                                Season        = feedSeasonOption
                            };
                            newAssociationSeasons.Add(dbAssociationSeason);
                            dbSeasonsByAssociation[associationId].Add(feedSeasonOption);
                        }
                    }

                    foreach (var feedDate in feed.Dates)
                    {
                        if (feedDate?.Games != null && feedDate.Games.Count > 0)
                        {
                            foreach (var feedGame in feedDate.Games)
                            {
                                Model.Venue dbVenue = null;
                                if (feedGame.Venue?.Id != null && !dbVenues.TryGetValue(feedGame.Venue.Id, out dbVenue))
                                {
                                    dbVenue = new Model.Venue
                                    {
                                        VenueID   = feedGame.Venue.Id,
                                        VenueName = feedGame.Venue.Name,
                                        VenueLink = feedGame.Venue.Link
                                    };
                                    newVenues.Add(dbVenue);
                                    dbVenues.Add(dbVenue.VenueID, dbVenue);
                                }

                                Model.VenueSeason dbVenueSeason = null;
                                if (!dbSeasonsByVenue.ContainsKey(feedGame.Venue.Id))
                                {
                                    // THIS MAY BE THE FIRST VenueSeason.
                                    dbSeasonsByVenue[feedGame.Venue.Id] = new List <int>();
                                }
                                if (!dbSeasonsByVenue[feedGame.Venue.Id].Contains(feedGame.Season))
                                {
                                    dbVenueSeason = new Model.VenueSeason
                                    {
                                        VenueID   = feedGame.Venue.Id,
                                        Season    = feedGame.Season,
                                        VenueName = feedGame.Venue.Name
                                    };
                                    newVenueSeasons.Add(dbVenueSeason);
                                    dbSeasonsByVenue[feedGame.Venue.Id].Add(feedGame.Season);
                                }

                                var        feedAwayTeam = feedGame.Teams?.Away?.Team;
                                Model.Team dbAwayTeam   = null;
                                if (feedAwayTeam?.Id != null && !dbTeams.TryGetValue(feedGame.Teams.Away.Team.Id, out dbAwayTeam))
                                {
                                    // TODO: MAKE CALL TO TEAM API TO FILL IN FULL TEAM DATA
                                    dbAwayTeam = new Model.Team
                                    {
                                        TeamID       = feedAwayTeam.Id,
                                        IsActive     = false,
                                        IsAllStar    = false,
                                        FirstSeason  = null,
                                        TeamFullName = feedAwayTeam.Name,
                                        TeamName     = feedAwayTeam.Name
                                    };
                                    newTeams.Add(dbAwayTeam);
                                    dbTeams.Add(dbAwayTeam.TeamID, dbAwayTeam);
                                }

                                Model.TeamSeason dbAwayTeamSeason = null;
                                if (dbAwayTeam != null)
                                {
                                    if (!dbSeasonsByTeam.ContainsKey(feedAwayTeam.Id))
                                    {
                                        dbSeasonsByTeam[feedAwayTeam.Id] = new List <int>();
                                    }
                                    if (!dbSeasonsByTeam[feedAwayTeam.Id].Contains(feedGame.Season))
                                    {
                                        dbAwayTeamSeason = new Model.TeamSeason
                                        {
                                            TeamID        = feedAwayTeam.Id,
                                            Season        = feedGame.Season,
                                            FullName      = feedAwayTeam.Name,
                                            TeamName      = feedAwayTeam.Name,
                                            AssociationID = associationId
                                        };
                                        newTeamSeasons.Add(dbAwayTeamSeason);
                                        dbSeasonsByTeam[feedAwayTeam.Id].Add(feedGame.Season);
                                    }
                                }

                                var        feedHomeTeam = feedGame.Teams?.Home?.Team;
                                Model.Team dbHomeTeam   = null;
                                if (feedHomeTeam?.Id != null && !dbTeams.TryGetValue(feedGame.Teams.Home.Team.Id, out dbHomeTeam))
                                {
                                    // TODO: MAKE CALL TO TEAM API TO FILL IN FULL TEAM DATA
                                    dbHomeTeam = new Model.Team
                                    {
                                        TeamID       = feedHomeTeam.Id,
                                        IsActive     = false,
                                        IsAllStar    = false,
                                        FirstSeason  = null,
                                        TeamFullName = feedHomeTeam.Name,
                                        TeamName     = feedHomeTeam.Name
                                    };
                                    newTeams.Add(dbHomeTeam);
                                    dbTeams.Add(dbHomeTeam.TeamID, dbHomeTeam);
                                }

                                Model.TeamSeason dbHomeTeamSeason = null;
                                if (dbHomeTeam != null)
                                {
                                    if (!dbSeasonsByTeam.ContainsKey(feedHomeTeam.Id))
                                    {
                                        dbSeasonsByTeam[feedHomeTeam.Id] = new List <int>();
                                    }
                                    if (!dbSeasonsByTeam[feedHomeTeam.Id].Contains(feedGame.Season))
                                    {
                                        dbHomeTeamSeason = new Model.TeamSeason
                                        {
                                            TeamID        = feedHomeTeam.Id,
                                            Season        = feedGame.Season,
                                            FullName      = feedHomeTeam.Name,
                                            TeamName      = feedHomeTeam.Name,
                                            AssociationID = associationId
                                        };
                                        newTeamSeasons.Add(dbHomeTeamSeason);
                                        dbSeasonsByTeam[feedHomeTeam.Id].Add(feedGame.Season);
                                    }
                                }

                                if (!dbGames.TryGetValue(feedGame.GamePk, out Model.Game dbGame))
                                {
                                    if (dbAllGameIds.Contains(feedGame.GamePk))
                                    {
                                        // GAME IS RETURNED FOR MULTIPLE ASSOCIATIONS
                                        dbGame = context.Games.SingleOrDefault(x => x.GameID == feedGame.GamePk);
                                        if (dbGame == null)
                                        {
                                            dbGame = newGames.SingleOrDefault(x => x.GameID == feedGame.GamePk);
                                        }
                                        if (dbGame == null)
                                        {
                                            throw new NullReferenceException("GameID BUT NO GAME.... WTF?!");
                                        }
                                        if (dbGame.AltAssociationID.HasValue && dbGame.AltAssociationID.Value != associationId)
                                        {
                                            throw new ArgumentException(string.Format($"GAME HAS MORE THAN 2 ASSOCIATIONS. WTF?! - {feedGame.GamePk}"));
                                        }
                                        dbGame.AltAssociationID = associationId;
                                    }
                                    else
                                    {
                                        dbGame = new Model.Game
                                        {
                                            GameID                 = feedGame.GamePk,
                                            Season                 = feedGame.Season,
                                            AssociationID          = associationId,
                                            GameTypeID             = feedGame.GameType,
                                            AwayTeamID             = feedGame.Teams?.Away?.Team?.Id,
                                            HomeTeamID             = feedGame.Teams?.Home?.Team?.Id,
                                            VenueID                = feedGame.Venue.Id,
                                            GameTime               = feedGame.GameDate,
                                            GameStatus             = dbGameStatusIds[feedGame.Status.StatusCode],
                                            AwayScore              = (byte?)feedGame.Teams?.Away?.Score,
                                            HomeScore              = (byte?)feedGame.Teams?.Home?.Score,
                                            IsTie                  = feedGame.IsTie ?? false,
                                            IsDoubleHeader         = feedGame.IsDoubleHeader,
                                            DayGameNum             = (byte)feedGame.GameNumber,
                                            IsDayGame              = feedGame.IsDayGame,
                                            IsTBD                  = feedGame.Status?.StartTimeTbd ?? false,
                                            IsIfNecessary          = feedGame.IfNecessary,
                                            IfNecessaryDescription = feedGame.IfNecessaryDescription,
                                            ScheduledLength        = (byte)feedGame.ScheduledInnings,
                                            SeriesLength           = (byte?)feedGame.GamesInSeries,
                                            SeriesGameNum          = (byte?)feedGame.SeriesGameNumber,
                                            SeriesDescription      = feedGame.SeriesDescription,
                                            RecordSource           = feedGame.RecordSource,
                                            AwaySeriesNum          = (byte?)feedGame.Teams?.Away?.SeriesNumber,
                                            AwayWins               = (byte?)feedGame.Teams?.Away?.LeagueRecord?.Wins,
                                            AwayLosses             = (byte?)feedGame.Teams?.Away?.LeagueRecord?.Losses,
                                            IsAwaySplitSquad       = feedGame.Teams?.Away?.SplitSquad,
                                            HomeSeriesNum          = (byte?)feedGame.Teams?.Home?.SeriesNumber,
                                            HomeWins               = (byte?)feedGame.Teams?.Home?.LeagueRecord?.Wins,
                                            HomeLosses             = (byte?)feedGame.Teams?.Home?.LeagueRecord?.Losses,
                                            IsHomeSplitSquad       = feedGame.Teams?.Home?.SplitSquad,
                                            AltAssociationID       = null,
                                            RawSeason              = feedGame.RawSeason,
                                            RescheduledDate        = feedGame.RescheduleDate,
                                            RescheduledFromDate    = feedGame.RescheduledFrom,
                                            ResumeDate             = feedGame.ResumeDate,
                                            ResumedFrom            = feedGame.ResumedFrom
                                        };
                                        newGames.Add(dbGame);
                                        dbGames.Add(dbGame.GameID, dbGame);
                                        dbAllGameIds.Add(dbGame.GameID);
                                    }
                                }
                                else
                                {
                                    ;                                     // TODO: UPDATE GAME VALUES
                                }
                            }
                        }
                    }
                    context.SaveChanges();
                }
            }
            context.Associations.AddRange(newAssociations);
            context.Teams.AddRange(newTeams);
            context.Venues.AddRange(newVenues);
            context.SaveChanges();
            context.AssociationSeasons.AddRange(newAssociationSeasons);
            context.VenueSeasons.AddRange(newVenueSeasons);
            context.SaveChanges();
            context.TeamSeasons.AddRange(newTeamSeasons);
            context.SaveChanges();
            context.Games.AddRange(newGames);
            context.SaveChanges();
        }