Files
BeWoPlaner/BeWo/ViewModel/AiPromptbausteinTreeVM.cs
2025-11-03 10:41:52 +01:00

131 lines
3.5 KiB
C#

using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Windows;
using BeWo.ServiceProxy;
using BeWo.Validation;
using BeWo.ViewModel.ListViewModel;
using BS.Shared;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.DataContracts.Feature.AI;
using BS.Shared.Extensions;
namespace BeWo.ViewModel
{
public class AiPromptbausteinTreeVM : AbstractDCMapperVM<AiPromptbausteinTreeDC>
{
private string _Name;
private string _Prompt;
private CompactEmployeeDC _Creator;
private bool _IsPublic;
private bool _IsKategorie;
private bool _IsExpanded;
private ActivationTypeId _ActivationType;
private AiPromptbausteinTreeListVM _Children;
public AiPromptbausteinTreeVM(AiPromptbausteinTreeDC pDataContract) : base(pDataContract, pDataContract?.Oid == null) {}
public string Name
{
get => _Name;
set => SetProperty(ref _Name, value, nameof(Name), () => DataContract.Name);
}
public string Prompt
{
get => _Prompt;
set => SetProperty(ref _Prompt, value, nameof(Prompt), () => DataContract.Prompt);
}
public CompactEmployeeDC Creator
{
get => _Creator;
set => SetProperty(ref _Creator, value, nameof(Creator), () => DataContract.Creator);
}
public bool IsPublic
{
get => _IsPublic;
set => SetProperty(ref _IsPublic, value, nameof(IsPublic), () => DataContract.IsPublic);
}
public bool IsKategorie
{
get => _IsKategorie;
set => SetProperty(ref _IsKategorie, value, nameof(IsKategorie), () => DataContract.IsKategorie);
}
public bool IsExpanded
{
get => _IsExpanded;
set => SetProperty(ref _IsExpanded, value, nameof(IsExpanded), () => DataContract.IsExpanded);
}
public ActivationTypeId ActivationType
{
get => _ActivationType;
set => SetProperty(ref _ActivationType, value, nameof(ActivationType), () => DataContract.ActivationType);
}
public AiPromptbausteinTreeListVM Children
{
get => _Children;
private set => SetProperty(ref _Children, value, nameof(Children));
}
public FontWeight FontWeight => IsKategorie ? FontWeights.Bold : FontWeights.Regular;
public AiPromptbausteinTreeVM Parent { get; set; }
protected override void InitByDataContract(AiPromptbausteinTreeDC pDataContract)
{
if (pDataContract is null)
return;
_Name = pDataContract.Name;
_Prompt = pDataContract.Prompt;
_Creator = pDataContract.Creator;
_IsPublic = pDataContract.IsPublic;
_IsKategorie = pDataContract.IsKategorie;
_IsExpanded = pDataContract.IsExpanded;
_ActivationType = pDataContract.ActivationType;
_Children = new AiPromptbausteinTreeListVM(pDataContract.Children, this);
}
protected override AiPromptbausteinTreeDC MapToDataContract(AiPromptbausteinTreeDC pDataContract, bool doCommit)
{
pDataContract.Name = _Name;
pDataContract.Prompt = _Prompt;
pDataContract.Creator = _Creator;
pDataContract.IsPublic = _IsPublic;
pDataContract.IsKategorie = _IsKategorie;
pDataContract.IsExpanded = _IsExpanded;
pDataContract.ActivationType = _ActivationType;
if (_Children != null)
{
pDataContract.Children = Children.CopyToDCList(doCommit);
}
return pDataContract;
}
public AiPromptbausteinTreeVM CopyToNewViewModel()
{
var rtn = new AiPromptbausteinTreeVM(new AiPromptbausteinTreeDC());
rtn.Name = _Name;
rtn.Prompt = _Prompt;
rtn.Creator = _Creator;
rtn.IsPublic = _IsPublic;
rtn.IsKategorie = _IsKategorie;
rtn.IsExpanded = _IsExpanded;
rtn.ActivationType = _ActivationType;
return rtn;
}
}
}