private static IEnumerable<UpdatePlayerPositionInfo> GetUpdatePlayerPositionInfos(CompetitionPosition[] qualifyingPlayersPositions, MatchHeaderInfo[] orderedMatches) { var matchIndex = 0; var positionIndex = 0; var results = qualifyingPlayersPositions.Select(position => { var result = default(UpdatePlayerPositionInfo); if (position.PlayerId.HasValue) { result = new UpdatePlayerPositionInfo { PlayerId = position.PlayerId.Value, MatchId = orderedMatches[matchIndex].Id, Position = positionIndex % 2 }; } positionIndex++; if ((positionIndex % 2) == 0) { matchIndex++; } return result; }); return results; }
public UpdatePlayerPositionInfo AddPlayerToSection(int playerId, CompetitionSection section, CompetitionDetails details) { var result = default(UpdatePlayerPositionInfo); // rounds are in descending order, so first will be the max var maxRound = details.Matches.Where(m => m.Section == section).Max(m => m.Round); var match = details.Matches.FirstOrDefault( m => m.Section == section && m.Round == 1 && (m.Player1.IsNull() || m.Player2.IsNull())); if (match.IsNotNull()) { result = new UpdatePlayerPositionInfo(); result.MatchId = match.Id; result.PlayerId = playerId; result.Position = match.Player1.IsNull() ? 0 : 1; } return result; }