using System.Text.Json.Serialization; using SPTarkov.Server.Core.Models.Common; using SPTarkov.Server.Core.Models.Eft.Common.Tables; using SPTarkov.Server.Core.Models.Eft.Profile; using SPTarkov.Server.Core.Models.Enums; namespace SPTarkov.Server.Core.Models.Spt.Dialog; public record SendMessageDetails { /// /// Player id /// [JsonPropertyName("recipientId")] public MongoId 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 long? 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; } /// /// Optional - the MongoID of the dialogue message to reply to /// [JsonPropertyName("replyTo")] public string? ReplyTo { get; set; } } public record ProfileChangeEvent { [JsonPropertyName("_id")] public MongoId? Id { get; set; } [JsonPropertyName("Type")] public string Type { get; set; } [JsonPropertyName("value")] public double? Value { get; set; } [JsonPropertyName("entity")] public string? Entity { get; set; } [JsonPropertyName("data")] public string? Data { get; set; } }