Looks like it works yeeha

This commit is contained in:
2021-11-06 16:38:49 -04:00
parent d1840fb164
commit 7ef9c0d498
3 changed files with 7 additions and 27 deletions

View File

@@ -117,35 +117,15 @@ namespace TOOHUCardAPI.Controllers
IEnumerable<User> users = new List<User>(); IEnumerable<User> users = new List<User>();
foreach (var val in requestObject.Ids.Values) 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<long> queriedUserSteamIds = requestObject.Ids.Select(i => i.Value);
IEnumerable<PlayerDataGetResponseObjectPlayer> responsePlayers = users Dictionary<int, PlayerDataGetResponseObjectPlayer> players = users
.Where(user => queriedUserSteamIds.Contains(user.SteamId)) .Select(((user, i) => KeyValuePair.Create(i, user.ToGetResponse(_mapper))))
.Select(user => user.ToGetResponse(_mapper));
Dictionary<int, PlayerDataGetResponseObjectPlayer> playersStatic = requestObject.Ids
.Select(pair =>
KeyValuePair.Create(pair.Key, responsePlayers.FirstOrDefault(resp => resp.SteamId == pair.Value)))
.ToDictionary(kv => kv.Key, kv => kv.Value); .ToDictionary(kv => kv.Key, kv => kv.Value);
Dictionary<int, Dictionary<string, object>> dynamicResponses = playersStatic
.Select(kv =>
{
var obj = JsonConvert.DeserializeObject<Dictionary<string, object>>(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<EncodedCardGroup>())
{
props[$"{cardgroup.GroupKey}"] = cardgroup.EncodedString;
}
}
PlayerDataGetResponseObject response = new PlayerDataGetResponseObject() PlayerDataGetResponseObject response = new PlayerDataGetResponseObject()
{ {
Players = dynamicResponses Players = players
}; };
return Ok(response); return Ok(response);

View File

@@ -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 // 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")] [JsonProperty("bo")]
public Dictionary<int, Dictionary<string, object>> Players { get; set; } public Dictionary<int, PlayerDataGetResponseObjectPlayer> Players { get; set; }
} }
/** /**

View File

@@ -9,7 +9,7 @@ namespace TOOHUCardAPI.Data
{ {
public AutomapProfile() public AutomapProfile()
{ {
CreateMap<User, PlayerDataGetResponseObjectPlayer>(); CreateMap<User, PlayerDataGetResponseObjectPlayer>().ForMember(i => i.EncodedCardGroups, opt => opt.Ignore());
CreateMap<User, PlayerBaseDataResponse>(); CreateMap<User, PlayerBaseDataResponse>();
} }