public async Task <NbaPlayerTrackerViewModel> BuildPlayerTrackerViewModel(int userId) { var viewModel = new NbaPlayerTrackerViewModel() { TrackedPlayers = new List <RecentPlayerStats>() }; var myPlayers = _playersDbAccessor.GetPlayersForUser(userId); if (!myPlayers.Any()) { viewModel.ErrorMessage = "You aren't tracking any players yet, search for players and add them to your list"; } var random = new Random(); foreach (var player in myPlayers) { var playerStats = new RecentPlayerStats() { Player = player }; try { var stats = await _playersClient.GetRecentStatsForPlayer(player.id, _config.GetValue <string>("NbaApiKey")); //The free NbaAPI playerId filter doesn't work, so it just returns the same few games everytime... // picking the data at random for each player playerStats.LatestStats = stats.data.ElementAtOrDefault(random.Next(0, stats.data.Count() - 1)); } catch (HttpRequestException httpEx) { var log = "Player search API call failed: " + httpEx.Message; viewModel.ErrorMessage = String.IsNullOrWhiteSpace(viewModel.ErrorMessage) ? log : ", " + log; //logger.Error(log); } catch (JsonException jsonEx) { var log = "Error deserializing JSON: " + jsonEx.Message; viewModel.ErrorMessage = String.IsNullOrWhiteSpace(viewModel.ErrorMessage) ? log : ", " + log; //logger.Error(log); } viewModel.TrackedPlayers.Add(playerStats); } return(viewModel); }