public IActionResult HandSummary(string gameId) { IGame game = GetGame(gameId); var hand = game.IHands.LastOrDefault(d => d.IsComplete()); var mustRedeal = hand?.MustRedeal; var scores = hand?.CalculateScores(); return(Json(new { points = scores?.Points?.ToDictionary(k => k.Key.Name, k => k.Value), coins = scores?.Coins?.ToDictionary(k => k.Key.Name, k => k.Value), tricks = hand.ITricks .Select(trick => new KeyValuePair <string, List <CardSummary> > ( trick.Winner().Player.Name, trick.OrderedMoves.Select(c => CardUtil.GetCardSummary(c.Value)).ToList() ) ), mustRedeal, buried = hand.Buried.Select(c => CardUtil.GetCardSummary(c)).ToList() })); }