TournamentReport.Models.Team.CalculateWinsLosses C# (CSharp) Method

CalculateWinsLosses() private method

private CalculateWinsLosses ( ) : void
return void
        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;
        }