private IEnumerable<Player> GetCurrentActivePlayers(IEnumerable<Player> gamePlayers, bool includeOvertime)
{
if (_currentActivePlayers == null)
{
var currentActivePlayers = new List<Player>();
Func<Shot, bool> query;
if (includeOvertime)
{
query = s => s.Game.Id == Game.Id;
}
else
{
query = s => s.Game.Id == Game.Id && s.Hole.Id < 10;
}
// TODO: The part where we check for holes less than 10 will need to change when we implement the new hole logic
foreach (var shot in Shots.Where(query).OrderByDescending(s => s.Id))
{
if (!currentActivePlayers.Any(p => p.Id == shot.Player.Id))
{
currentActivePlayers.Add(shot.Player);
}
else
{
break;
}
}
_currentActivePlayers = currentActivePlayers;
}
return _currentActivePlayers;
}