using System; using BS.Shared; using BS.Shared.DataContracts; using Newtonsoft.Json; namespace BeWo.ViewModel { [JsonObject(MemberSerialization.OptIn)] public class AiConversationMessageVM : AbstractDCMapperVM { private string _Message; public AiConversationMessageVM(AiConversationMessageDC dc) : base(dc, dc.Oid is null) { } public string Json { get => JsonConvert.SerializeObject(this, Formatting.Indented); } [JsonProperty(Order = 1)] public string Message { get { return _Message; } set { if (!AreDifferent(Message, value)) return; _Message = value; StoreDirtyInformation(AreDifferent(DataContract.Message, value), nameof(Message)); FirePropertyChanged(nameof(Message)); } } [JsonProperty(Order = 2)] public string RoleString => DataContract.Role.ToString(); [JsonProperty(Order = 3)] public string Time => DataContract.Created.ToString(); public AiConversationMessageRole Role => DataContract.Role; protected override void InitByDataContract(AiConversationMessageDC pDataContract) { _Message = pDataContract.Message; } protected override AiConversationMessageDC MapToDataContract(AiConversationMessageDC pDataContract, bool doCommit) { pDataContract.Message = _Message; return pDataContract; } } }