public void SetStatuses(IStage <Match> stage) { foreach (var game in stage.Tours.SelectMany(tour => tour.Games)) { UnitPairWithResults.GetPair(game.Players.Item1, game.Players.Item2) .SetResult(game.Result); } foreach (var winner in UnitPairWithResults.Pairs.Select(pair => pair.GetWinnerThenLoser().Item1)) { winner.AddStatus(stage, new PairWinner()); } }
public static UnitPairWithResults GetPair(IGameUnit team1, IGameUnit team2) { var result = Pairs.SingleOrDefault(x => (x._team1.Key == team1 && x._team2.Key == team2) || (x._team1.Key == team2 && x._team1.Key == team2)); if (result != null) { return(result); } result = new UnitPairWithResults(team1, team2); Pairs.Add(result); return(result); }