Files
BeWoPlaner/BeWo/ViewModel/AiPromptbausteinPromptVM.cs
Rene Evertz 98e06d7f47 AI Promptbaustein Button ausgelagert. Input State+ActionType, Output Event SelectedPrompt
AI Promptbaustein Auswahl flüssiger (IsSelected Bug)
Reset Selection bei Popup Closed
2026-03-13 11:38:18 +01:00

210 lines
5.8 KiB
C#

using System;
using System.Windows;
using BS.Shared;
using BS.Shared.DataContracts.Compact;
using BS.Shared.DataContracts.Feature.AI;
namespace BeWo.ViewModel
{
public class AiPromptbausteinPromptVM : AbstractDCMapperVM<AiPromptbausteinPromptDC>
{
private string _Title;
private string _Description;
private long? _ParentFolderOid;
private CompactEmployeeDC _Creator;
private bool _IsPublic;
private int _Position;
private string _Prompt;
private bool _ShowPrompt;
private bool _ShowPromptByTenant;
private bool _IsOwnsoftPrompt;
private string _OwnsoftRefLink;
private bool _IsSelected;
private bool _IsFavorite;
private AiActionType _ActionType;
public AiPromptbausteinPromptVM(AiPromptbausteinPromptDC dc) : base(dc, dc.Oid)
{
}
public string Title
{
get => _Title;
set => SetProperty(ref _Title, value, nameof(Title), () => DataContract.Title);
}
public string Description
{
get => _Description;
set => SetProperty(ref _Description, value, nameof(Description), () => DataContract.Description);
}
public long? ParentFolderOid
{
get => _ParentFolderOid;
set => SetProperty(ref _ParentFolderOid, value, nameof(ParentFolderOid), () => DataContract.ParentFolderOid);
}
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 int Position
{
get => _Position;
set => SetProperty(ref _Position, value, nameof(Position), () => DataContract.Position);
}
public string Prompt
{
get => _Prompt;
set => SetProperty(ref _Prompt, value, nameof(Prompt), () => DataContract.Prompt);
}
public bool ShowPrompt
{
get => _ShowPrompt;
set => SetProperty(ref _ShowPrompt, value, nameof(ShowPrompt), () => DataContract.ShowPrompt);
}
public bool ShowPromptByTenant
{
get => _ShowPromptByTenant;
set => SetProperty(ref _ShowPromptByTenant, value, nameof(ShowPromptByTenant), () => DataContract.ShowPromptByTenant);
}
public bool IsOwnsoftPrompt
{
get => _IsOwnsoftPrompt;
set => SetProperty(ref _IsOwnsoftPrompt, value, nameof(IsOwnsoftPrompt), () => DataContract.IsOwnsoftPrompt);
}
public string OwnsoftRefLink
{
get => _OwnsoftRefLink;
set => SetProperty(ref _OwnsoftRefLink, value, nameof(OwnsoftRefLink), () => DataContract.OwnsoftRefLink);
}
public AiActionType ActionType
{
get => _ActionType;
set => SetProperty(ref _ActionType, value, nameof(ActionType), () => DataContract.ActionType);
}
public bool IsFavorite
{
get => _IsFavorite;
set
{
var success = SetProperty(ref _IsFavorite, value, nameof(IsFavorite), () => DataContract.IsFavorite);
if (success)
FirePropertyChanged(nameof(FontWeight));
}
}
public bool CanShareEdit
{
get => BeWoApp.HasLoggedOnUserRight(UserRightType.AiModulePromptbausteinShare);
}
public bool CanEdit
{
get => DataContract.CanEdit && BeWoApp.HasLoggedOnUserRight(UserRightType.AiModulePromptbausteineEdit);
set => DataContract.CanEdit = value;
}
public bool IsSelected
{
get => _IsSelected;
set
{
var success = SetProperty(ref _IsSelected, value, nameof(IsSelected));
if (success)
FirePropertyChanged(nameof(IsInfoVisible));
}
}
public bool IsInfoVisible
{
get => IsOwnsoftPrompt && !string.IsNullOrWhiteSpace(OwnsoftRefLink) && IsSelected;
}
public FontWeight FontWeight
{
get => IsFavorite ? FontWeights.Bold : FontWeights.Medium;
}
protected override void InitByDataContract(AiPromptbausteinPromptDC pDataContract)
{
_Title = pDataContract.Title;
_Description = pDataContract.Description;
_ParentFolderOid = pDataContract.ParentFolderOid;
_Creator = pDataContract.Creator;
_IsPublic = pDataContract.IsPublic;
_Position = pDataContract.Position;
_Prompt = pDataContract.Prompt;
_ShowPrompt = pDataContract.ShowPrompt;
_ShowPromptByTenant = pDataContract.ShowPromptByTenant;
_IsOwnsoftPrompt = pDataContract.IsOwnsoftPrompt;
_OwnsoftRefLink = pDataContract.OwnsoftRefLink;
_IsFavorite = pDataContract.IsFavorite;
_ActionType = pDataContract.ActionType;
}
protected override AiPromptbausteinPromptDC MapToDataContract(AiPromptbausteinPromptDC pDataContract, bool doCommit)
{
pDataContract.IsFavorite = _IsFavorite;
pDataContract.Title = _Title;
pDataContract.Description = _Description;
pDataContract.ParentFolderOid = _ParentFolderOid;
pDataContract.Creator = _Creator;
pDataContract.IsPublic = _IsPublic;
pDataContract.Position = _Position;
pDataContract.Prompt = _Prompt;
pDataContract.ShowPrompt = _ShowPrompt;
pDataContract.ShowPromptByTenant = _ShowPromptByTenant;
pDataContract.IsOwnsoftPrompt = _IsOwnsoftPrompt;
pDataContract.OwnsoftRefLink = _OwnsoftRefLink;
pDataContract.ActionType = _ActionType;
return pDataContract;
}
public override void UpdateByDataContract(AiPromptbausteinPromptDC pDataContract)
{
Title = pDataContract.Title;
Description = pDataContract.Description;
ParentFolderOid = pDataContract.ParentFolderOid;
Creator = pDataContract.Creator;
IsPublic = pDataContract.IsPublic;
Position = pDataContract.Position;
Prompt = pDataContract.Prompt;
ShowPrompt = pDataContract.ShowPrompt;
ShowPromptByTenant = pDataContract.ShowPromptByTenant;
IsOwnsoftPrompt = pDataContract.IsOwnsoftPrompt;
OwnsoftRefLink = pDataContract.OwnsoftRefLink;
IsFavorite = pDataContract.IsFavorite;
ActionType = pDataContract.ActionType;
}
public override bool IsDirty
{
get
{
if (!CanEdit)
return _DirtyProps.Contains(nameof(IsFavorite));
return _DirtyProps.Count > 0;
}
}
}
}