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; using BS.Shared.Interface; namespace BeWo.ViewModel { public class AiPromptbausteinTreeVM : AbstractDCMapperVM, IAiPromptbaustein { private string _Displayname; private string _Content; private ActivationTypeId _ActivationType; private AiPromptbausteinType _PromptbausteinType; private string _Metadata; private AiActionType _AiActionType; private CompactEmployeeDC _Creator; private bool _IsOnlyForCreator; private bool _ShowUserPrompt; private bool _ShowUserPromptByTenant; private int _Position; private bool _IsExpanded; private AiPromptbausteinTreeListVM _Children; public AiPromptbausteinTreeVM(AiPromptbausteinTreeDC dc) : base(dc, dc.Oid) { } public string Displayname { get => _Displayname; set => SetProperty(ref _Displayname, value, nameof(Displayname), () => DataContract.Displayname); } public string Content { get => _Content; set => SetProperty(ref _Content, value, nameof(Content), () => DataContract.Content); } public AiPromptbausteinType PromptbausteinType { get => _PromptbausteinType; set => SetProperty(ref _PromptbausteinType, value, nameof(PromptbausteinType), () => DataContract.PromptbausteinType); } public string Metadata { get => _Metadata; set => SetProperty(ref _Metadata, value, nameof(Metadata), () => DataContract.Metadata); } public AiActionType AiActionType { get => _AiActionType; set => SetProperty(ref _AiActionType, value, nameof(AiActionType), () => DataContract.AiActionType); } public CompactEmployeeDC Creator { get => _Creator; set => SetProperty(ref _Creator, value, nameof(Creator), () => DataContract.Creator); } public bool IsOnlyForCreator { get => _IsOnlyForCreator; set => SetProperty(ref _IsOnlyForCreator, value, nameof(IsOnlyForCreator), () => DataContract.IsOnlyForCreator); } public bool ShowUserPrompt { get => _ShowUserPrompt; set => SetProperty(ref _ShowUserPrompt, value, nameof(ShowUserPrompt), () => DataContract.ShowUserPrompt); } public bool ShowUserPromptByTenant { get => _ShowUserPromptByTenant; set => SetProperty(ref _ShowUserPromptByTenant, value, nameof(ShowUserPromptByTenant), () => DataContract.ShowUserPromptByTenant); } public int Position { get => _Position; set => SetProperty(ref _Position, value, nameof(Position), () => DataContract.Position); } public bool IsExpanded { get => _IsExpanded; set => SetProperty(ref _IsExpanded, value, nameof(IsExpanded)); } public AiPromptbausteinTreeListVM Children { get => _Children; set => SetProperty(ref _Children, value, nameof(Children)); } public AiPromptbausteinTreeVM Parent { get; set; } public bool HasChildren => Children is object && Children.Count > 0; public FontWeight FontWeight => PromptbausteinType != AiPromptbausteinType.Prompt ? FontWeights.Bold : FontWeights.Regular; public long? Oid => DataContract.Oid; protected override void InitByDataContract(AiPromptbausteinTreeDC pDataContract) { if (pDataContract is null) return; _Displayname = pDataContract.Displayname; _Content = pDataContract.Content; _PromptbausteinType = pDataContract.PromptbausteinType; _Metadata = pDataContract.Metadata; _AiActionType = pDataContract.AiActionType; _Creator = pDataContract.Creator; _IsOnlyForCreator = pDataContract.IsOnlyForCreator; _ShowUserPrompt = pDataContract.ShowUserPrompt; _ShowUserPromptByTenant = pDataContract.ShowUserPromptByTenant; _Position = pDataContract.Position; _IsExpanded = pDataContract.IsExpanded; _Children = new AiPromptbausteinTreeListVM(pDataContract.Children, this); } protected override AiPromptbausteinTreeDC MapToDataContract(AiPromptbausteinTreeDC pDataContract, bool doCommit) { pDataContract.Displayname = _Displayname; pDataContract.Content = _Content; pDataContract.PromptbausteinType = _PromptbausteinType; pDataContract.Metadata = _Metadata; pDataContract.AiActionType = _AiActionType; pDataContract.Creator = _Creator; pDataContract.IsOnlyForCreator = _IsOnlyForCreator; pDataContract.ShowUserPrompt = _ShowUserPrompt; pDataContract.ShowUserPromptByTenant = _ShowUserPromptByTenant; pDataContract.Position = _Position; pDataContract.IsExpanded = _IsExpanded; pDataContract.ParentOid = Parent?.DataContract.Oid; if (_Children != null) { pDataContract.Children = Children.CopyToDCList(doCommit); } return pDataContract; } public AiPromptbausteinTreeVM CopyToNewViewModel() { var rtn = new AiPromptbausteinTreeVM(new AiPromptbausteinTreeDC()); rtn.Displayname = _Displayname; rtn.Content = _Content; rtn.PromptbausteinType = _PromptbausteinType; rtn.Metadata = _Metadata; rtn.AiActionType = _AiActionType; rtn.Creator = _Creator; rtn.IsOnlyForCreator = _IsOnlyForCreator; rtn.ShowUserPrompt = _ShowUserPrompt; rtn.ShowUserPromptByTenant = _ShowUserPromptByTenant; rtn.Position = _Position; rtn.IsExpanded = _IsExpanded; return rtn; } } }