private async Task reportWinner() { game.EndTime = DateTime.Now; TimeSpan gameDuration = game.EndTime - game.StartTime; var scores = new List <(int score, ApiPlayer player)>(); foreach (ApiPlayer currentPlayer in game.Players) { var playerScore = 2 * game.GetNumTerritories(currentPlayer) + game.GetNumPlacedArmies(currentPlayer); scores.Add((playerScore, currentPlayer)); } var orderedScores = scores.OrderByDescending(s => s.score); var gameOverRequest = new GameOverRequest { FinalBoard = game.Board.SerializableTerritories, GameDuration = gameDuration.ToString(), WinnerName = orderedScores.First().player.Name, FinalScores = orderedScores.Select(s => $"{s.player.Name} ({s.score})") }; foreach (ApiPlayer currentPlayer in game.Players) { var response = await(currentPlayer.HttpClient.PostAsJsonAsync("/gameOver", gameOverRequest)); } }