2025-12-30 11:30:01 +01:00
|
|
|
|
using System;
|
2026-01-29 14:44:39 +01:00
|
|
|
|
using System.Windows;
|
2025-12-30 11:30:01 +01:00
|
|
|
|
using BS.Shared;
|
2025-12-31 10:47:00 +01:00
|
|
|
|
using BS.Shared.DataContracts.Compact;
|
2026-01-23 16:28:47 +01:00
|
|
|
|
using BS.Shared.DataContracts.Feature.AI;
|
2025-12-30 11:30:01 +01:00
|
|
|
|
|
|
|
|
|
|
namespace BeWo.ViewModel
|
|
|
|
|
|
{
|
|
|
|
|
|
public class AiPromptbausteinPromptVM : AbstractDCMapperVM<AiPromptbausteinPromptDC>
|
|
|
|
|
|
{
|
|
|
|
|
|
private string _Title;
|
|
|
|
|
|
private string _Description;
|
2025-12-31 10:47:00 +01:00
|
|
|
|
private long? _ParentFolderOid;
|
|
|
|
|
|
private CompactEmployeeDC _Creator;
|
|
|
|
|
|
private bool _IsPublic;
|
2025-12-30 11:30:01 +01:00
|
|
|
|
private int _Position;
|
|
|
|
|
|
private string _Prompt;
|
|
|
|
|
|
private bool _ShowPrompt;
|
|
|
|
|
|
private bool _ShowPromptByTenant;
|
|
|
|
|
|
private bool _IsOwnsoftPrompt;
|
|
|
|
|
|
private string _OwnsoftRefLink;
|
2026-01-23 15:32:06 +01:00
|
|
|
|
private bool _IsFavorite;
|
2026-02-10 12:24:20 +01:00
|
|
|
|
private AiActionType _ActionType;
|
2025-12-30 11:30:01 +01:00
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-12-31 10:47:00 +01:00
|
|
|
|
public long? ParentFolderOid
|
2025-12-30 11:30:01 +01:00
|
|
|
|
{
|
|
|
|
|
|
get => _ParentFolderOid;
|
|
|
|
|
|
set => SetProperty(ref _ParentFolderOid, value, nameof(ParentFolderOid), () => DataContract.ParentFolderOid);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-12-31 10:47:00 +01:00
|
|
|
|
public CompactEmployeeDC Creator
|
2025-12-30 11:30:01 +01:00
|
|
|
|
{
|
2025-12-31 10:47:00 +01:00
|
|
|
|
get => _Creator;
|
|
|
|
|
|
set => SetProperty(ref _Creator, value, nameof(Creator), () => DataContract.Creator);
|
2025-12-30 11:30:01 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-12-31 10:47:00 +01:00
|
|
|
|
public bool IsPublic
|
2025-12-30 11:30:01 +01:00
|
|
|
|
{
|
2025-12-31 10:47:00 +01:00
|
|
|
|
get => _IsPublic;
|
|
|
|
|
|
set => SetProperty(ref _IsPublic, value, nameof(IsPublic), () => DataContract.IsPublic);
|
2025-12-30 11:30:01 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
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;
|
2026-04-08 11:55:22 +02:00
|
|
|
|
set => SetProperty(ref _ShowPrompt, value, nameof(ShowPrompt), () => DataContract.ShowPrompt, nameof(IsPromptVisible));
|
2025-12-30 11:30:01 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public bool ShowPromptByTenant
|
|
|
|
|
|
{
|
|
|
|
|
|
get => _ShowPromptByTenant;
|
2026-04-08 11:55:22 +02:00
|
|
|
|
set => SetProperty(ref _ShowPromptByTenant, value, nameof(ShowPromptByTenant), () => DataContract.ShowPromptByTenant, nameof(IsPromptVisible));
|
2025-12-30 11:30:01 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
}
|
2026-02-10 12:24:20 +01:00
|
|
|
|
|
|
|
|
|
|
public AiActionType ActionType
|
|
|
|
|
|
{
|
|
|
|
|
|
get => _ActionType;
|
|
|
|
|
|
set => SetProperty(ref _ActionType, value, nameof(ActionType), () => DataContract.ActionType);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-01-23 15:32:06 +01:00
|
|
|
|
public bool IsFavorite
|
|
|
|
|
|
{
|
|
|
|
|
|
get => _IsFavorite;
|
2026-04-08 11:55:22 +02:00
|
|
|
|
set => SetProperty(ref _IsFavorite, value, nameof(IsFavorite), () => DataContract.IsFavorite, nameof(FontWeight));
|
2026-01-23 15:32:06 +01:00
|
|
|
|
}
|
2025-12-30 11:30:01 +01:00
|
|
|
|
|
2025-12-31 10:47:00 +01:00
|
|
|
|
public bool CanEdit
|
|
|
|
|
|
{
|
2026-03-04 15:36:55 +01:00
|
|
|
|
get => DataContract.CanEdit && BeWoApp.HasLoggedOnUserRight(UserRightType.AiModulePromptbausteineEdit);
|
2025-12-31 10:47:00 +01:00
|
|
|
|
set => DataContract.CanEdit = value;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-01-06 15:08:38 +01:00
|
|
|
|
public bool IsInfoVisible
|
|
|
|
|
|
{
|
2026-05-12 11:47:04 +02:00
|
|
|
|
get => IsOwnsoftPrompt && !string.IsNullOrWhiteSpace(OwnsoftRefLink);
|
2026-01-06 15:08:38 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-01-29 14:44:39 +01:00
|
|
|
|
public FontWeight FontWeight
|
|
|
|
|
|
{
|
|
|
|
|
|
get => IsFavorite ? FontWeights.Bold : FontWeights.Medium;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-04-08 11:55:22 +02:00
|
|
|
|
public bool IsPromptVisible
|
|
|
|
|
|
{
|
|
|
|
|
|
get => ShowPrompt && ShowPromptByTenant;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-06-19 11:22:05 +02:00
|
|
|
|
public bool CanShareEdit
|
|
|
|
|
|
{
|
|
|
|
|
|
get => BeWoApp.HasLoggedOnUserRight(UserRightType.AiModulePromptbausteinShare)
|
|
|
|
|
|
&& Creator?.EmployeeOid is long owner
|
2026-06-23 11:37:35 +02:00
|
|
|
|
&& owner == BeWoApp.CompactLoggedOnEmployee.EmployeeOid
|
|
|
|
|
|
&& CanEdit;
|
2026-06-19 11:22:05 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-05-12 11:47:04 +02:00
|
|
|
|
public string FavoritenHeader => IsFavorite ? "Favorit entfernen" : "Favorit hinzufügen";
|
|
|
|
|
|
|
2025-12-30 11:30:01 +01:00
|
|
|
|
protected override void InitByDataContract(AiPromptbausteinPromptDC pDataContract)
|
|
|
|
|
|
{
|
|
|
|
|
|
_Title = pDataContract.Title;
|
|
|
|
|
|
_Description = pDataContract.Description;
|
|
|
|
|
|
_ParentFolderOid = pDataContract.ParentFolderOid;
|
2025-12-31 10:47:00 +01:00
|
|
|
|
_Creator = pDataContract.Creator;
|
|
|
|
|
|
_IsPublic = pDataContract.IsPublic;
|
2025-12-30 11:30:01 +01:00
|
|
|
|
_Position = pDataContract.Position;
|
|
|
|
|
|
_Prompt = pDataContract.Prompt;
|
|
|
|
|
|
_ShowPrompt = pDataContract.ShowPrompt;
|
|
|
|
|
|
_ShowPromptByTenant = pDataContract.ShowPromptByTenant;
|
|
|
|
|
|
_IsOwnsoftPrompt = pDataContract.IsOwnsoftPrompt;
|
|
|
|
|
|
_OwnsoftRefLink = pDataContract.OwnsoftRefLink;
|
2026-01-23 15:32:06 +01:00
|
|
|
|
_IsFavorite = pDataContract.IsFavorite;
|
2026-02-10 12:24:20 +01:00
|
|
|
|
_ActionType = pDataContract.ActionType;
|
2025-12-30 11:30:01 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
protected override AiPromptbausteinPromptDC MapToDataContract(AiPromptbausteinPromptDC pDataContract, bool doCommit)
|
|
|
|
|
|
{
|
2026-01-27 16:58:04 +01:00
|
|
|
|
pDataContract.IsFavorite = _IsFavorite;
|
2025-12-30 11:30:01 +01:00
|
|
|
|
pDataContract.Title = _Title;
|
|
|
|
|
|
pDataContract.Description = _Description;
|
|
|
|
|
|
pDataContract.ParentFolderOid = _ParentFolderOid;
|
2025-12-31 10:47:00 +01:00
|
|
|
|
pDataContract.Creator = _Creator;
|
|
|
|
|
|
pDataContract.IsPublic = _IsPublic;
|
2025-12-30 11:30:01 +01:00
|
|
|
|
pDataContract.Position = _Position;
|
|
|
|
|
|
pDataContract.Prompt = _Prompt;
|
|
|
|
|
|
pDataContract.ShowPrompt = _ShowPrompt;
|
|
|
|
|
|
pDataContract.ShowPromptByTenant = _ShowPromptByTenant;
|
|
|
|
|
|
pDataContract.IsOwnsoftPrompt = _IsOwnsoftPrompt;
|
|
|
|
|
|
pDataContract.OwnsoftRefLink = _OwnsoftRefLink;
|
2026-02-10 12:24:20 +01:00
|
|
|
|
pDataContract.ActionType = _ActionType;
|
2025-12-30 11:30:01 +01:00
|
|
|
|
|
|
|
|
|
|
return pDataContract;
|
|
|
|
|
|
}
|
2025-12-31 10:47:00 +01:00
|
|
|
|
|
|
|
|
|
|
public override void UpdateByDataContract(AiPromptbausteinPromptDC pDataContract)
|
|
|
|
|
|
{
|
2026-06-05 15:46:56 +02:00
|
|
|
|
if (IsNew)
|
|
|
|
|
|
IsNew = false;
|
|
|
|
|
|
|
2025-12-31 10:47:00 +01:00
|
|
|
|
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;
|
2026-01-23 15:32:06 +01:00
|
|
|
|
IsFavorite = pDataContract.IsFavorite;
|
2026-02-10 12:24:20 +01:00
|
|
|
|
ActionType = pDataContract.ActionType;
|
2026-05-27 15:34:53 +02:00
|
|
|
|
|
|
|
|
|
|
DataContract = pDataContract;
|
|
|
|
|
|
|
|
|
|
|
|
SetDirty(false);
|
2025-12-31 10:47:00 +01:00
|
|
|
|
}
|
2026-01-27 16:58:04 +01:00
|
|
|
|
|
2026-03-13 11:38:18 +01:00
|
|
|
|
public override bool IsDirty
|
2026-01-27 16:58:04 +01:00
|
|
|
|
{
|
|
|
|
|
|
get
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!CanEdit)
|
|
|
|
|
|
return _DirtyProps.Contains(nameof(IsFavorite));
|
2026-03-13 11:38:18 +01:00
|
|
|
|
return _DirtyProps.Count > 0;
|
2026-01-27 16:58:04 +01:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-12-30 11:30:01 +01:00
|
|
|
|
}
|
|
|
|
|
|
}
|