Now supports saving card groups, this is probably the ugliest code ive ever written but anything to avoid 20 cardgroup properties. we should see if there's a better way, it could probably be a lot cleaner

This commit is contained in:
2021-10-29 00:46:00 -04:00
parent ee4304d729
commit 3051b63e44
14 changed files with 393 additions and 32 deletions

View File

@@ -0,0 +1,10 @@
using Newtonsoft.Json;
namespace TOOHUCardAPI.DTO
{
public abstract class AbstractRequest
{
[JsonProperty("method")]
public string Method { get; set; }
}
}

View File

@@ -0,0 +1,14 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace TOOHUCardAPI.DTO
{
public abstract class AbstractResponse
{
public static string SUCCESS_CODE = "0000";
[JsonProperty("code")]
public string Code { get; set; } = SUCCESS_CODE;
[JsonProperty("msg")]
public string Message { get; set; } = string.Empty;
}
}

View File

@@ -1,10 +1,20 @@
using System.Collections.Generic;
using Newtonsoft.Json;
namespace TOOHUCardAPI.DTO
{
public class PlayerDataGetRequestObject
public class PlayerDataGetRequestObject : AbstractRequest
{
public string Method { get; set; }
public Dictionary<string, string> Ids;
}
public class PlayerDataSaveCardGroupRequestObject: AbstractRequest
{
public string SteamId { get; set; }
public string UserId { get; set; }
[JsonProperty("group_key")]
public string GroupKey { get; set; }
[JsonProperty("group_data")]
public string GroupData { get; set; }
}
}

View File

@@ -1,5 +1,7 @@
using System.Collections.Generic;
using System.Dynamic;
using System.Linq;
using System.Reflection;
using AutoMapper;
using Newtonsoft.Json;
using TOOHUCardAPI.Data.Models;
@@ -9,30 +11,17 @@ namespace TOOHUCardAPI.DTO
public class PlayerDataGetResponseObject
{
[JsonProperty("bo")]
public Dictionary<string, PlayerDataGetResponseObjectPlayer> Players { get; set; }
public PlayerDataGetResponseObject(Dictionary<string, User> users, IMapper mapper)
{
this.Players = users.Aggregate(new Dictionary<string, PlayerDataGetResponseObjectPlayer>(),
(players, pair) =>
{
User user = pair.Value;
players[pair.Key] = mapper.Map<PlayerDataGetResponseObjectPlayer>(user);
return players;
});
}
public Dictionary<string, Dictionary<string, object>> Players { get; set; }
}
/**
* Fields pulled from the game code
* Looking up Gamerules.Playerdata
*/
public class PlayerDataGetResponseObjectPlayer
public class PlayerDataGetResponseObjectPlayer: AbstractResponse
{
[JsonProperty("code")] public string Code { get; set; } = "0000";
[JsonProperty("msg")] public string Message { get; set; } = string.Empty;
//[JsonProperty("steamid")]
//public string SteamId { get; set; }
[JsonProperty("steamid")]
public string SteamId { get; set; }
[JsonProperty("max_wave")] public int MaxWave { get; set; } = 0;
[JsonProperty("max_team_wave")] public int MaxTeamWave { get; set; } = 0;
[JsonProperty("pet_level")] public int PetLevel { get; set; } = 1;
@@ -42,5 +31,16 @@ namespace TOOHUCardAPI.DTO
[JsonProperty("vip")] public int Vip { get; set; } = 1;
[JsonProperty("point")] public int Point { get; set; } = 10000;
[JsonProperty("level_list")] public string LevelList { get; set; } = string.Empty;
public Dictionary<string, object> ToDynamicProperties()
{
return GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public)
.ToDictionary(prop => prop.Name, prop => prop.GetValue(this));
}
}
public class PlayerDataSaveCardGroupResponseObject : AbstractResponse
{
}
}