using System.Text.Json.Serialization; using Core.Models.Eft.Common.Tables; using Core.Models.Eft.Profile; using Core.Models.Enums; namespace Core.Models.Spt.Dialog; public class SendMessageDetails { /// /// Player id /// [JsonPropertyName("recipientId")] public string? RecipientId { get; set; } /// /// Who is sending this message /// [JsonPropertyName("sender")] public MessageType? Sender { get; set; } /// /// Optional - leave blank to use sender value /// [JsonPropertyName("dialogType")] public MessageType? DialogType { get; set; } /// /// Optional - if sender is USER these details are used /// [JsonPropertyName("senderDetails")] public UserDialogInfo? SenderDetails { get; set; } /// /// Optional - the trader sending the message /// [JsonPropertyName("trader")] public string? Trader { get; set; } /// /// Optional - used in player/system messages, otherwise templateId is used /// [JsonPropertyName("messageText")] public string? MessageText { get; set; } /// /// Optional - Items to send to player /// [JsonPropertyName("items")] public List? Items { get; set; } /// /// Optional - How long items will be stored in mail before expiry /// [JsonPropertyName("itemsMaxStorageLifetimeSeconds")] public int? ItemsMaxStorageLifetimeSeconds { get; set; } /// /// Optional - Used when sending messages from traders who send text from locale json /// [JsonPropertyName("templateId")] public string? TemplateId { get; set; } /// /// Optional - ragfair related /// [JsonPropertyName("systemData")] public SystemData? SystemData { get; set; } /// /// Optional - Used by ragfair messages /// [JsonPropertyName("ragfairDetails")] public MessageContentRagfair? RagfairDetails { get; set; } /// /// OPTIONAL - allows modification of profile settings via mail /// [JsonPropertyName("profileChangeEvents")] public List? ProfileChangeEvents { get; set; } } public class ProfileChangeEvent { [JsonPropertyName("_id")] public string? Id { get; set; } [JsonPropertyName("Type")] public ProfileChangeEventType? Type { get; set; } [JsonPropertyName("value")] public double? Value { get; set; } [JsonPropertyName("entity")] public string? Entity { get; set; } [JsonPropertyName("data")] public string? Data { get; set; } } public enum ProfileChangeEventType { TraderSalesSum, TraderStanding, ProfileLevel, SkillPoints, ExamineAllItems, UnlockTrader, AssortmentUnlockRule, HideoutAreaLevel }