public static EventStats GetEventResults(int LeagueID, int LeagueEventID, Dictionary <int, int> handicaps) { EventStats retVal = new EventStats(); retVal.initialize(); Dictionary <int, int> matchups = DatabaseFunctions.GetMatchups(LeagueEventID); Dictionary <string, string> LeagueSettings = DatabaseFunctions.GetLeagueSettings(LeagueID); Dictionary <int, List <byte> > scores = DatabaseFunctions.GetScores(LeagueEventID); CourseInfo courseInfo = DatabaseFunctions.GetCourseInfo(LeagueEventID); Dictionary <int, int> subs = DatabaseFunctions.GetSubs(LeagueEventID); if (handicaps == null) { handicaps = Scoring.GetPlayerHandicapsForEvent(LeagueID, LeagueEventID, scores.Keys.ToList()); } if (LeagueSettings.ContainsKey("MaxHandicap")) { int maxhandicap = int.Parse(LeagueSettings["MaxHandicap"]); List <int> keys = handicaps.Keys.ToList(); foreach (int key in keys) { if (handicaps[key] > maxhandicap) { handicaps[key] = maxhandicap; } } } int Team1PlayerA_ID, Team1PlayerB_ID, Team2PlayerA_ID, Team2PlayerB_ID; //Add No shows to Handicaps and scores var noShowScores = Scoring.GetNoShowScores(courseInfo); scores.Add(0, noShowScores); scores.Add(-1, noShowScores); scores.Add(-2, noShowScores); if (LeagueSettings.ContainsKey("NewScoring")) { handicaps.Add(0, 7); //no show handicaps.Add(-1, 7); //blind1 handicaps.Add(-2, 7); //blind2 } else { handicaps.Add(0, 0); //no show handicaps.Add(-1, 9); //blind1 handicaps.Add(-2, 9); //blind2 } Dictionary <int, Team> teams = DatabaseFunctions.GetTeams(LeagueID); int index = 0; //foreach matchup foreach (int team1ID in matchups.Keys) { Scoring.GetGolferIDs(team1ID, LeagueEventID, subs, handicaps, scores, out Team1PlayerA_ID, out Team1PlayerB_ID); Scoring.GetGolferIDs(matchups[team1ID], LeagueEventID, subs, handicaps, scores, out Team2PlayerA_ID, out Team2PlayerB_ID); Scoring.MatchupResults results_A = Scoring.GetMatchupResults(scores[Team1PlayerA_ID], scores[Team2PlayerA_ID], handicaps[Team1PlayerA_ID], handicaps[Team2PlayerA_ID], courseInfo); results_A.Team1PlayerID = Team1PlayerA_ID; results_A.Team2PlayerID = Team2PlayerA_ID; Scoring.MatchupResults results_B = Scoring.GetMatchupResults(scores[Team1PlayerB_ID], scores[Team2PlayerB_ID], handicaps[Team1PlayerB_ID], handicaps[Team2PlayerB_ID], courseInfo); results_B.Team1PlayerID = Team1PlayerB_ID; results_B.Team2PlayerID = Team2PlayerB_ID; index++; if (LeagueSettings.ContainsKey("SubPtsLimit")) { results_A = AdjustResultsForSubs(results_A, WasPlayerSubbing(Team1PlayerA_ID, team1ID, subs, teams), WasPlayerSubbing(Team2PlayerA_ID, matchups[team1ID], subs, teams)); results_B = AdjustResultsForSubs(results_B, WasPlayerSubbing(Team1PlayerB_ID, team1ID, subs, teams), WasPlayerSubbing(Team2PlayerB_ID, matchups[team1ID], subs, teams)); } if (LeagueSettings.ContainsKey("NewScoring")) { results_A = AdjustResultsForNoShows(results_A, Team1PlayerA_ID, Team2PlayerA_ID); results_B = AdjustResultsForNoShows(results_B, Team1PlayerB_ID, Team2PlayerB_ID); } if (Team1PlayerA_ID > 0) { retVal.grossScores.Add(Team1PlayerA_ID, results_A.grossScorePlayer1); retVal.netScores.Add(Team1PlayerA_ID, results_A.netScorePlayer1); } if (Team2PlayerA_ID > 0) { retVal.grossScores.Add(Team2PlayerA_ID, results_A.grossScorePlayer2); retVal.netScores.Add(Team2PlayerA_ID, results_A.netScorePlayer2); } if (Team1PlayerB_ID > 0) { retVal.netScores.Add(Team1PlayerB_ID, results_B.netScorePlayer1); retVal.grossScores.Add(Team1PlayerB_ID, results_B.grossScorePlayer1); } if (Team2PlayerB_ID > 0) { retVal.grossScores.Add(Team2PlayerB_ID, results_B.grossScorePlayer2); retVal.netScores.Add(Team2PlayerB_ID, results_B.netScorePlayer2); } int team1MedalPlayPts, team2MedalPlayPts; CalculateMedalPlay(out team1MedalPlayPts, out team2MedalPlayPts, results_A, results_B, LeagueSettings); retVal.teamPts.Add(team1ID, results_A.totalPtsPlayer1 + results_B.totalPtsPlayer1 + team1MedalPlayPts); retVal.teamPts.Add(matchups[team1ID], results_A.totalPtsPlayer2 + results_B.totalPtsPlayer2 + team2MedalPlayPts); retVal.matchupResultsA.Add(team1ID, results_A); retVal.matchupResultsB.Add(team1ID, results_B); } return(retVal); }