2025-03-19 16:30:27 +01:00
|
|
|
|
using System;
|
|
|
|
|
|
|
|
|
|
|
|
using BS.Shared;
|
2025-04-08 12:58:12 +02:00
|
|
|
|
using BS.Shared.DataContracts.Feature.AI;
|
2025-03-28 10:05:29 +01:00
|
|
|
|
using Newtonsoft.Json;
|
2025-03-19 16:30:27 +01:00
|
|
|
|
|
|
|
|
|
|
namespace BeWo.ViewModel
|
|
|
|
|
|
{
|
|
|
|
|
|
public class AiConversationMessageVM : AbstractDCMapperVM<AiConversationMessageDC>
|
|
|
|
|
|
{
|
2025-04-22 14:05:51 +02:00
|
|
|
|
private bool _IsChecked;
|
2025-04-02 16:01:21 +02:00
|
|
|
|
private string _Message;
|
2025-03-19 16:30:27 +01:00
|
|
|
|
|
|
|
|
|
|
public AiConversationMessageVM(AiConversationMessageDC dc) : base(dc, dc.Oid is null)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-09 15:30:54 +02:00
|
|
|
|
public event EventHandler IsCheckedChanged;
|
|
|
|
|
|
|
2025-04-22 14:05:51 +02:00
|
|
|
|
public bool IsChecked
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _IsChecked; }
|
|
|
|
|
|
set
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!AreDifferent(IsChecked, value))
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
_IsChecked = value;
|
|
|
|
|
|
FirePropertyChanged(nameof(IsChecked));
|
2025-07-09 15:30:54 +02:00
|
|
|
|
IsCheckedChanged?.Invoke(this, EventArgs.Empty);
|
2025-04-22 14:05:51 +02:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-04-02 16:01:21 +02:00
|
|
|
|
public string Message
|
2025-03-19 16:30:27 +01:00
|
|
|
|
{
|
2025-04-02 16:01:21 +02:00
|
|
|
|
get { return _Message; }
|
2025-03-19 16:30:27 +01:00
|
|
|
|
set
|
|
|
|
|
|
{
|
2025-04-02 16:01:21 +02:00
|
|
|
|
if (!AreDifferent(Message, value))
|
2025-03-19 16:30:27 +01:00
|
|
|
|
return;
|
|
|
|
|
|
|
2025-04-02 16:01:21 +02:00
|
|
|
|
_Message = value;
|
|
|
|
|
|
StoreDirtyInformation(AreDifferent(DataContract.Message, value), nameof(Message));
|
|
|
|
|
|
FirePropertyChanged(nameof(Message));
|
2025-03-19 16:30:27 +01:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-04-08 10:22:22 +02:00
|
|
|
|
public AiConversationMessageRole Role => DataContract.Role;
|
2025-04-08 12:58:12 +02:00
|
|
|
|
public string ModelName => DataContract.ModelName;
|
|
|
|
|
|
public int Duration => DataContract.Duration ?? 0;
|
2025-06-20 13:43:06 +02:00
|
|
|
|
public string DurationSec => ((double)Duration / 1000).ToString("0.#");
|
2025-04-08 12:58:12 +02:00
|
|
|
|
public DateTime Created => DataContract.Created;
|
2025-04-08 10:22:22 +02:00
|
|
|
|
|
2025-03-19 16:30:27 +01:00
|
|
|
|
protected override void InitByDataContract(AiConversationMessageDC pDataContract)
|
|
|
|
|
|
{
|
2025-04-02 16:01:21 +02:00
|
|
|
|
_Message = pDataContract.Message;
|
2025-03-19 16:30:27 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
protected override AiConversationMessageDC MapToDataContract(AiConversationMessageDC pDataContract, bool doCommit)
|
|
|
|
|
|
{
|
2025-04-02 16:01:21 +02:00
|
|
|
|
pDataContract.Message = _Message;
|
2025-03-19 16:30:27 +01:00
|
|
|
|
|
|
|
|
|
|
return pDataContract;
|
|
|
|
|
|
}
|
2025-07-09 15:30:54 +02:00
|
|
|
|
|
|
|
|
|
|
public void SetIsChecked(bool value)
|
|
|
|
|
|
{
|
|
|
|
|
|
_IsChecked = value;
|
|
|
|
|
|
FirePropertyChanged(nameof(IsChecked));
|
|
|
|
|
|
}
|
2025-03-19 16:30:27 +01:00
|
|
|
|
}
|
|
|
|
|
|
}
|