diff --git a/TOOHUCardAPI/Controllers/PlayerDataController.cs b/TOOHUCardAPI/Controllers/PlayerDataController.cs index ac60f30..1b8c327 100644 --- a/TOOHUCardAPI/Controllers/PlayerDataController.cs +++ b/TOOHUCardAPI/Controllers/PlayerDataController.cs @@ -117,35 +117,15 @@ namespace TOOHUCardAPI.Controllers IEnumerable users = new List(); foreach (var val in requestObject.Ids.Values) { - users = users.Append(await _userService.LoginUser(val)); // threading errors + users = users.Append(await _userService.LoginUser(val)); // threading errors, can't use linq here } - IEnumerable queriedUserSteamIds = requestObject.Ids.Select(i => i.Value); - IEnumerable responsePlayers = users - .Where(user => queriedUserSteamIds.Contains(user.SteamId)) - .Select(user => user.ToGetResponse(_mapper)); - Dictionary playersStatic = requestObject.Ids - .Select(pair => - KeyValuePair.Create(pair.Key, responsePlayers.FirstOrDefault(resp => resp.SteamId == pair.Value))) + + Dictionary players = users + .Select(((user, i) => KeyValuePair.Create(i, user.ToGetResponse(_mapper)))) .ToDictionary(kv => kv.Key, kv => kv.Value); - Dictionary> dynamicResponses = playersStatic - .Select(kv => - { - var obj = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(kv.Value)); - return KeyValuePair.Create(kv.Key, obj); - }) - .ToDictionary(kv => kv.Key, kv => kv.Value); - foreach (var kv in dynamicResponses) - { - var props = kv.Value; - var user = users.FirstOrDefault(user1 => user1.SteamId == requestObject.Ids[kv.Key]); - foreach (var cardgroup in user.EncodedCardGroups ?? new List()) - { - props[$"{cardgroup.GroupKey}"] = cardgroup.EncodedString; - } - } PlayerDataGetResponseObject response = new PlayerDataGetResponseObject() { - Players = dynamicResponses + Players = players }; return Ok(response); diff --git a/TOOHUCardAPI/DTO/PlayerData/PlayerDataGetResponseObject.cs b/TOOHUCardAPI/DTO/PlayerData/PlayerDataGetResponseObject.cs index 4b6a02c..d54ff65 100644 --- a/TOOHUCardAPI/DTO/PlayerData/PlayerDataGetResponseObject.cs +++ b/TOOHUCardAPI/DTO/PlayerData/PlayerDataGetResponseObject.cs @@ -12,7 +12,7 @@ namespace TOOHUCardAPI.DTO.PlayerData { // Instead of using a defined object, use a dictionary so we can add the necessary cardgroup items. I dont want to make 20 of them in the class [JsonProperty("bo")] - public Dictionary> Players { get; set; } + public Dictionary Players { get; set; } } /** diff --git a/TOOHUCardAPI/Data/AutomapProfile.cs b/TOOHUCardAPI/Data/AutomapProfile.cs index 8eaa5f3..af6207a 100644 --- a/TOOHUCardAPI/Data/AutomapProfile.cs +++ b/TOOHUCardAPI/Data/AutomapProfile.cs @@ -9,7 +9,7 @@ namespace TOOHUCardAPI.Data { public AutomapProfile() { - CreateMap(); + CreateMap().ForMember(i => i.EncodedCardGroups, opt => opt.Ignore()); CreateMap(); }