using System; using System.Collections.Generic; using Newtonsoft.Json; using System.Globalization; [Serializable] public class MailEntry { public string id; public string type; public int priority; public MailLogic logic; public MailVisuals visuals; public MailContent content; public string rewards_table_id; public List actions; } [Serializable] public class MailLogic { public string date_start; public string date_end; public bool is_deletable; private const string DATE_FORMAT = "yyyy.MM.dd HH:mm:ss"; [JsonIgnore] public DateTime? EndDate { get { if (date_end == "-1" || string.IsNullOrEmpty(date_end)) return null; if (DateTime.TryParseExact(date_end, DATE_FORMAT, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime parsedDate)) return parsedDate; return null; } } [JsonIgnore] public DateTime? StartDate { get { if (date_start == "-1" || string.IsNullOrEmpty(date_start)) return null; if (DateTime.TryParseExact(date_start, DATE_FORMAT, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime parsedDate)) return parsedDate; return null; } } } [Serializable] public class MailVisuals { public string prefab; public string icon_id; public string sender_name; } [Serializable] public class MailContent { public string title; public string body; } [Serializable] public class MailAction { public string type; public string label; } [Serializable] public class RewardItem { public string type; public string id; public int amount; public string name; }