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; }
}