using System; using System.Collections.Generic; using System.Linq; using Newtonsoft.Json; using TOOHUCardAPI.Data.Models; namespace TOOHUCardAPI.DTO.RankData { public class RankEntryDTO { [JsonProperty("rank_type")] public string RankType { get; set; } [JsonProperty("steamid")] public long SteamId { get; set; } [JsonProperty("userid")] public long UserId { get; set; } [JsonProperty("username")] public string Username { get; set; } [JsonProperty("version")] public string Version { get; set; } [JsonProperty("wave")] public int Wave { get; set; } [JsonProperty("damage")] public float Damage { get; set; } [JsonProperty("update_time")] public DateTime UpdateTime { get; set; } [JsonIgnore] public Dictionary Cards { get; set; } } public static class RankEntryDTOExtensions { public static RankEntryDTO ToRankEntryDTO(this RankEntry rankEntry) { return new RankEntryDTO { RankType = ((char) rankEntry.RankType).ToString(), SteamId = rankEntry.User.SteamId, UserId = rankEntry.User.AccountId, Username = rankEntry.User.Username, Version = rankEntry.Version, Wave = rankEntry.Wave, Damage = rankEntry.Damage, UpdateTime = rankEntry.UpdateTime, Cards = rankEntry.TowersUsed.Select(tower => KeyValuePair.Create(tower.TowerKey, tower.EncodedData)) .ToDictionary(kv => kv.Key, kv => kv.Value) }; } } }