using System; using BS.Shared; using BS.Shared.DataContracts.Feature.AI; using Newtonsoft.Json; namespace BeWo.ViewModel { public class AiConversationMessageVM : AbstractDCMapperVM { private bool _IsChecked; private string _Message; public AiConversationMessageVM(AiConversationMessageDC dc) : base(dc, dc.Oid is null) { } public event EventHandler IsCheckedChanged; public bool IsChecked { get { return _IsChecked; } set { if (!AreDifferent(IsChecked, value)) return; _IsChecked = value; FirePropertyChanged(nameof(IsChecked)); IsCheckedChanged?.Invoke(this, EventArgs.Empty); } } public string Message { get { return _Message; } set { if (!AreDifferent(Message, value)) return; _Message = value; StoreDirtyInformation(AreDifferent(DataContract.Message, value), nameof(Message)); FirePropertyChanged(nameof(Message)); } } public AiConversationMessageRole Role => DataContract.Role; public string ModelName => DataContract.ModelName; public int Duration => DataContract.Duration ?? 0; public string DurationSec => ((double)Duration / 1000).ToString("0.#"); public DateTime Created => DataContract.Created; protected override void InitByDataContract(AiConversationMessageDC pDataContract) { _Message = pDataContract.Message; } protected override AiConversationMessageDC MapToDataContract(AiConversationMessageDC pDataContract, bool doCommit) { pDataContract.Message = _Message; return pDataContract; } public void SetIsChecked(bool value) { _IsChecked = value; FirePropertyChanged(nameof(IsChecked)); } } }