public void Sync()
        {
            var frenoyTeams = _frenoy.GetClubTeams(new GetClubTeamsRequest
            {
                Club = _options.FrenoyClub,
                Season = _options.FrenoySeason
            });

            foreach (var frenoyTeam in frenoyTeams.TeamEntries)
            {
                // Create new division=reeks for each team in the club
                // Check if it already exists: Two teams could play in the same division
                Reeks reeks = _db.Reeksen.SingleOrDefault(x => x.FrenoyDivisionId.ToString() == frenoyTeam.DivisionId);
                if (reeks == null)
                {
                    reeks = CreateReeks(frenoyTeam);
                    _db.Reeksen.Add(reeks);
                    CommitChanges();

                    // Create the teams in the new division=reeks
                    var frenoyDivision = _frenoy.GetDivisionRanking(new GetDivisionRankingRequest
                    {
                        DivisionId = frenoyTeam.DivisionId
                    });
                    foreach (var frenoyTeamsInDivision in frenoyDivision.RankingEntries)
                    {
                        var clubPloeg = CreateClubPloeg(reeks, frenoyTeamsInDivision);
                        _db.ClubPloegen.Add(clubPloeg);
                    }
                    CommitChanges();
                }

                // Add Erembodegem players to the home team
                var ploeg = _db.ClubPloegen.Single(x => x.ClubId == _thuisClubId && x.ReeksId == reeks.ID && x.Code == frenoyTeam.Team);
                if (MapTeamPlayers)
                {
                    var players = _options.Players[ploeg.Code];
                    foreach (var playerName in players)
                    {
                        var clubPloegSpeler = new ClubPloegSpeler
                        {
                            Kapitein = playerName == players.First() ? 1 : 0,
                            SpelerID = GetSpelerId(playerName),
                            ClubPloegID = ploeg.ID
                        };
                        _db.ClubPloegSpelers.Add(clubPloegSpeler);
                    }
                    CommitChanges();
                }

                // Create the matches=kalender table in the new  division=reeks
                var matches = _frenoy.GetMatches(new GetMatchesRequest
                {
                    Club = _options.FrenoyClub,
                    Season = _options.FrenoySeason,
                    DivisionId = reeks.FrenoyDivisionId.ToString(),
                    Team = ploeg.Code,
                    WithDetailsSpecified = true,
                    WithDetails = true,
                });
                int newVerlsagId = 0;
                foreach (TeamMatchEntryType frenoyMatch in matches.TeamMatchesEntries.Where(x => x.HomeTeam.Trim() != "Vrij" && x.AwayTeam.Trim() != "Vrij"))
                {
                    Debug.Assert(frenoyMatch.DateSpecified);
                    Debug.Assert(frenoyMatch.TimeSpecified);

                    // Kalender entries
                    var kalender = _db.Kalender.SingleOrDefault(x => x.FrenoyMatchId == frenoyMatch.MatchId);
                    if (kalender == null)
                    {
                        kalender = CreateKalenderMatch(reeks, frenoyMatch, ploeg.Code);
                        _db.Kalender.Add(kalender);
                    }

                    // Wedstrijdverslagen
                    if (frenoyMatch.MatchDetails != null)
                    {
                        var verslag = _db.Verslagen.SingleOrDefault(x => x.KalenderID == kalender.ID);
                        if (verslag == null)
                        {
                            verslag = new Verslag
                            {
                                ID = newVerlsagId--,
                                Kalender = kalender,
                                KalenderID = kalender.ID,
                                Details = 0,
                                SpelerID = 4, // Dirk DS
                                UitslagThuis = int.Parse(frenoyMatch.Score.Substring(0, frenoyMatch.Score.IndexOf("-"))),
                                UitslagUit = int.Parse(frenoyMatch.Score.Substring(frenoyMatch.Score.IndexOf("-") + 1)),
                                WO = 0 // TODO: Don't add verslag for WO (will crash around here probably:)
                            };
                            _db.Verslagen.Add(verslag);
                        }

                        var oldVerslagSpelers = _db.SpelersVerslag.Where(x => x.VerslagID == verslag.ID).ToArray();
                        _db.SpelersVerslag.RemoveRange(oldVerslagSpelers);

                        AddVerslagPlayers(frenoyMatch.MatchDetails.HomePlayers.Players, verslag, true);
                        AddVerslagPlayers(frenoyMatch.MatchDetails.AwayPlayers.Players, verslag, false);
                    }
                    CommitChanges();
                }
            }
        }
        private void AddVerslagPlayers(TeamMatchPlayerEntryType[] players, Verslag verslag, bool thuisSpeler)
        {
            if (!_isVttl)
            {
                // Sporta API does not (yet?) return MatchDetails
                return;
            }

            foreach (var frenoyVerslagSpeler in players)
            {
                //TODO: we zaten hier
                // Moeten ook de positie opslaan
                // En UniqueIndex

                VerslagSpeler verslagSpeler = new VerslagSpeler
                {
                    Verslag = verslag,
                    VerslagID = verslag.ID,
                    Klassement = frenoyVerslagSpeler.Ranking,
                    Thuis = thuisSpeler ? 1 : 0,
                    Winst = int.Parse(frenoyVerslagSpeler.VictoryCount),
                    SpelerNaam = GetSpelerNaam(frenoyVerslagSpeler)
                };
                var dbPlayer = _db.Spelers.SingleOrDefault(x => x.ComputerNummerVTTL.HasValue && x.ComputerNummerVTTL.Value.ToString() == frenoyVerslagSpeler.UniqueIndex);
                if (dbPlayer != null)
                {
                    verslagSpeler.SpelerID = dbPlayer.ID;
                    if (!string.IsNullOrWhiteSpace(dbPlayer.NaamKort))
                    {
                        verslagSpeler.SpelerNaam = dbPlayer.NaamKort;
                    }
                }

                _db.SpelersVerslag.Add(verslagSpeler);
            }
        }