private void CalculateWinsLosses()
{
if (Games == null) {
return;
}
if (!_standingsCalculated) {
Wins = 0;
Losses = 0;
Ties = 0;
GoalsScored = 0;
GoalsAgainst = 0;
Func<Game, GameResult> gameResultDeterminator = game => {
if (game.HomeTeamScore == null) {
return null;
}
if (game.HomeTeam != null && game.HomeTeam.Id == Id)
{
return new GameResult(game.HomeTeamScore.Value, game.AwayTeamScore.GetValueOrDefault());
}
if (game.AwayTeam != null && game.AwayTeam.Id == Id)
{
return new GameResult(game.AwayTeamScore.GetValueOrDefault(), game.HomeTeamScore.Value);
}
return null;
};
foreach (var game in Games) {
var gameResult = gameResultDeterminator(game);
if (gameResult != null) {
if (gameResult.ThisTeamScore > gameResult.OtherTeamScore) {
Wins++;
}
if (gameResult.ThisTeamScore < gameResult.OtherTeamScore) {
Losses++;
}
if (gameResult.ThisTeamScore == gameResult.OtherTeamScore) {
Ties++;
}
GoalsScored += gameResult.ThisTeamScore;
GoalsAgainst += gameResult.OtherTeamScore;
}
}
}
_standingsCalculated = true;
}