private static ICollection<OpposingTeam> MapAllTeams(TeamEntity src)
 {
     return src.Opponents.Select(opponent => new OpposingTeam
     {
         ClubId = opponent.ClubId,
         TeamCode = opponent.TeamCode
     }).ToArray();
 }
 public void SyncTeamMatches(TeamEntity team)
 {
     // Create the matches=kalender table in the new  division=reeks
     GetMatchesResponse matches = _frenoy.GetMatches(new GetMatchesRequest
     {
         Club = _settings.FrenoyClub,
         Season = _settings.FrenoySeason.ToString(), // TODO: replace with team.Year - 1999
         DivisionId = team.FrenoyDivisionId.ToString(),
         Team = team.TeamCode,
         WithDetailsSpecified = false,
         WithDetails = false,
     });
     SyncMatches(team.Id, team.FrenoyDivisionId, matches, false);
 }
        public static TeamsExcelCreator CreateFormation(TeamEntity[] teams, List<MatchEntity> matches, PlayerEntity[] players, ClubEntity[] clubs)
        {
            var result = new List<TeamExcelModel>();
            foreach (var team in teams.OrderByDescending(x => x.Competition).ThenBy(x => x.TeamCode))
            {
                var teamModel = new TeamExcelModel(team.Competition + " " + team.TeamCode);

                foreach (var teamPlayer in team.Players)
                {
                    var player = players.First(x => x.Id == teamPlayer.PlayerId);
                    teamModel.Players.Add(new TeamPlayerExcelModel(player.NaamKort, teamPlayer.PlayerType));
                }

                foreach (var match in matches.Where(x => x.FrenoyDivisionId == team.FrenoyDivisionId).OrderBy(x => x.Date))
                {
                    var teamMatch = new TeamMatchExcelModel(match, clubs);
                    foreach (var matchPlayer in match.Players.Where(x => x.Status != PlayerMatchStatus.Captain && x.Status != PlayerMatchStatus.Major))
                    {
                        if (!teamMatch.PlayerDecisions.ContainsKey(matchPlayer.Name))
                        {
                            teamMatch.PlayerDecisions.Add(matchPlayer.Name, matchPlayer.Status);
                        }
                    }
                    if (!string.IsNullOrWhiteSpace(match.Block))
                    {
                        foreach (var matchPlayer in match.Players.Where(x => x.Status == match.Block))
                        {
                            if (!teamMatch.CaptainDecisions.Contains(matchPlayer.Name))
                            {
                                teamMatch.CaptainDecisions.Add(matchPlayer.Name);
                            }
                        }
                    }

                    teamModel.Matches.Add(teamMatch);
                }

                result.Add(teamModel);
            }

            return new TeamsExcelCreator(result);
        }
 private TeamOpponentEntity CreateTeamOpponent(TeamEntity teamEntity, RankingEntryType frenoyTeam)
 {
     var opponent = new TeamOpponentEntity
     {
         TeamId = teamEntity.Id,
         ClubId = GetClubId(frenoyTeam.TeamClub),
         TeamCode = ExtractTeamCodeFromFrenoyName(frenoyTeam.Team)
     };
     return opponent;
 }
        private TeamEntity CreateTeam(TeamEntryType frenoyTeam)
        {
            var team = new TeamEntity();
            team.Competition = _settings.Competition.ToString();
            team.ReeksType = _settings.DivisionType;
            team.Year = _settings.Year;
            team.LinkId = $"{frenoyTeam.DivisionId}_{frenoyTeam.Team}";

            if (_isVttl)
            {
                var teamRegexMatch = VttlDivisionRegex.Match(frenoyTeam.DivisionName);
                team.ReeksNummer = teamRegexMatch.Groups[1].Value;
                team.ReeksCode = teamRegexMatch.Groups[2].Value;
            }
            else
            {
                var teamRegexMatch = SportaDivisionRegex.Match(frenoyTeam.DivisionName.Trim());
                team.ReeksNummer = teamRegexMatch.Groups[1].Value;
                team.ReeksCode = teamRegexMatch.Groups[2].Value;
            }

            team.FrenoyDivisionId = int.Parse(frenoyTeam.DivisionId);
            team.FrenoyTeamId = frenoyTeam.TeamId;
            team.TeamCode = frenoyTeam.Team;
            return team;
        }
 public void SyncLastOpponentMatches(TeamEntity team, OpposingTeam opponent)
 {
     if (ShouldAttemptOpponentMatchSync(opponent, team.Id))
     {
         GetMatchesResponse matches = _frenoy.GetMatches(new GetMatchesRequest
         {
             Club = GetFrenoyClubdId(opponent.ClubId),
             Season = _settings.FrenoySeason.ToString(),
             Team = opponent.TeamCode,
             WithDetailsSpecified = false,
             WithDetails = false,
             DivisionId = team.FrenoyDivisionId.ToString()
         });
         SyncMatches(team.Id, team.FrenoyDivisionId, matches, false);
     }
 }
        public int? SyncLastYearOpponentMatches(TeamEntity team, OpposingTeam opponent)
        {
            const int prevFrenoySeason = Constants.FrenoySeason - 1;
            string frenoyOpponentClub = GetFrenoyClubdId(opponent.ClubId);

            var opponentTeams = _frenoy.GetClubTeams(new GetClubTeamsRequest
            {
                Club = frenoyOpponentClub,
                Season = prevFrenoySeason.ToString()
            });

            var lastYearTeam = opponentTeams.TeamEntries.SingleOrDefault(x => x.Team == opponent.TeamCode && x.DivisionCategory == Constants.FrenoyTeamCategory);
            if (lastYearTeam != null)
            {
                int lastYearDivisionId = int.Parse(lastYearTeam.DivisionId);
                var ourTeam = _db.Teams.SingleOrDefault(x => x.Year == Constants.CurrentSeason - 1 && x.FrenoyDivisionId == lastYearDivisionId && x.Competition == _settings.Competition.ToString());
                if (ShouldAttemptOpponentMatchSync(opponent, team.Id, prevFrenoySeason))
                {
                    GetMatchesResponse matches = _frenoy.GetMatches(new GetMatchesRequest
                    {
                        Club = frenoyOpponentClub,
                        Season = prevFrenoySeason.ToString(),
                        Team = opponent.TeamCode,
                        WithDetailsSpecified = false,
                        WithDetails = false,
                        DivisionId = lastYearTeam.DivisionId
                    });
                    SyncMatches(ourTeam?.Id, lastYearDivisionId, matches, false, prevFrenoySeason);
                }

                return lastYearDivisionId;
            }
            return null;
        }