diff --git a/BeWo/View/Detail/AI/AiPromptbausteinComplexSelectionView.xaml b/BeWo/View/Detail/AI/AiPromptbausteinComplexSelectionView.xaml
index 74d0b35ab..34211b99f 100644
--- a/BeWo/View/Detail/AI/AiPromptbausteinComplexSelectionView.xaml
+++ b/BeWo/View/Detail/AI/AiPromptbausteinComplexSelectionView.xaml
@@ -343,6 +343,9 @@
+
+
+
diff --git a/BeWo/View/Detail/AI/AiPromptbausteinComplexTreeView.xaml b/BeWo/View/Detail/AI/AiPromptbausteinComplexTreeView.xaml
index fa3bd7614..85529b61c 100644
--- a/BeWo/View/Detail/AI/AiPromptbausteinComplexTreeView.xaml
+++ b/BeWo/View/Detail/AI/AiPromptbausteinComplexTreeView.xaml
@@ -345,6 +345,9 @@
+
+
+
diff --git a/BeWo/View/Detail/AI/AiPromptbausteinRoutineView.xaml b/BeWo/View/Detail/AI/AiPromptbausteinRoutineView.xaml
index ac0496f12..b1884b858 100644
--- a/BeWo/View/Detail/AI/AiPromptbausteinRoutineView.xaml
+++ b/BeWo/View/Detail/AI/AiPromptbausteinRoutineView.xaml
@@ -103,6 +103,11 @@
TextWrapping="Wrap" />
+
+
+
+
+
-
-
-
-
+
+
+
+
-
+
-
-
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
diff --git a/BeWo/ViewModel/AiPromptbausteinRoutineStepVM.cs b/BeWo/ViewModel/AiPromptbausteinRoutineStepVM.cs
index b263d1247..2be1f7167 100644
--- a/BeWo/ViewModel/AiPromptbausteinRoutineStepVM.cs
+++ b/BeWo/ViewModel/AiPromptbausteinRoutineStepVM.cs
@@ -35,6 +35,11 @@ namespace BeWo.ViewModel
set => SetProperty(ref _ReferenceVersion, value, nameof(ReferenceVersion), () => DataContract.ReferenceVersion);
}
+ public bool IsValid
+ {
+ get => DataContract.IsValid;
+ }
+
protected override void InitByDataContract(AiPromptbausteinRoutineStepDC pDataContract)
{
_Position = pDataContract.Position;
diff --git a/BeWo/ViewModel/AiPromptbausteinRoutineVM.cs b/BeWo/ViewModel/AiPromptbausteinRoutineVM.cs
index b29447eee..ab584bd9e 100644
--- a/BeWo/ViewModel/AiPromptbausteinRoutineVM.cs
+++ b/BeWo/ViewModel/AiPromptbausteinRoutineVM.cs
@@ -1,4 +1,5 @@
using System;
+using System.Linq;
using BeWo.ViewModel.ListViewModel;
using BS.Shared;
using BS.Shared.DataContracts;
@@ -89,6 +90,10 @@ namespace BeWo.ViewModel
public string FavoritenHeader => IsFavorite ? "Favorit entfernen" : "Favorit hinzufügen";
public override bool IsDirty => base.IsDirty || Steps.IsDirty;
+ public bool IsValid
+ {
+ get => Steps.Count > 0 && Steps.VMList.All(x => x.IsValid);
+ }
protected override void InitByDataContract(AiPromptbausteinRoutineDC pDataContract)
{
diff --git a/BeWo/ViewModel/View/AI/AiPromptbausteinComplexSelectionViewModel.cs b/BeWo/ViewModel/View/AI/AiPromptbausteinComplexSelectionViewModel.cs
index bdb00b802..174d1e3ae 100644
--- a/BeWo/ViewModel/View/AI/AiPromptbausteinComplexSelectionViewModel.cs
+++ b/BeWo/ViewModel/View/AI/AiPromptbausteinComplexSelectionViewModel.cs
@@ -29,6 +29,10 @@ namespace BeWo.ViewModel.View.AI
private IBeWoWindowService WindowService { get; set; }
+ public bool IsFavorite { get; set; }
+ public DelegateCommand SendCommand { get; set; }
+ public AiActionType AiActionType { get; set; }
+
public AiPromptbausteinFolderVM Favoriten { get; set; }
public AiPromptbausteinFolderVM CopiedFolder { get; set; }
public AiPromptbausteinPromptVM CopiedPrompt { get; set; }
@@ -103,12 +107,6 @@ namespace BeWo.ViewModel.View.AI
CanEditPromptbausteine = BeWoApp.HasLoggedOnUserRight(UserRightType.AiModulePromptbausteineEdit);
}
- public bool IsFavorite { get; set; }
-
- public DelegateCommand SendCommand { get; set; }
-
- public AiActionType AiActionType { get; set; }
-
public AiPromptbausteinFolderVM SelectedFolder
{
get => _SelectedFolder;
@@ -164,7 +162,7 @@ namespace BeWo.ViewModel.View.AI
}
public bool CanSend()
{
- return SelectedItem is object;
+ return SelectedItem is AiPromptbausteinPromptVM || (SelectedItem is AiPromptbausteinRoutineVM routine && routine.IsValid);
}
public void InitVMList()
{
diff --git a/Service/DCEntityMapper/AiPromptbausteinRoutineStepDC_AiPromptbausteinRoutineStep.cs b/Service/DCEntityMapper/AiPromptbausteinRoutineStepDC_AiPromptbausteinRoutineStep.cs
index f3fec216b..d93265d10 100644
--- a/Service/DCEntityMapper/AiPromptbausteinRoutineStepDC_AiPromptbausteinRoutineStep.cs
+++ b/Service/DCEntityMapper/AiPromptbausteinRoutineStepDC_AiPromptbausteinRoutineStep.cs
@@ -3,7 +3,7 @@ using System.Linq;
using BeWo.Data.Access;
using BeWo.Data.Entities;
-
+using BeWo.Data.Security;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
@@ -13,6 +13,8 @@ namespace BeWo.Service.DCEntityMapper
{
public class AiPromptbausteinRoutineStepDC_AiPromptbausteinRoutineStep : BeWoDataContract_BeWoEntityBase
{
+ public Employee CurrentUser => UserRightHelper.GetLoggedInEmployee();
+
public override AiPromptbausteinRoutineStepDC MergeWithDC(AiPromptbausteinRoutineStep pEntity, AiPromptbausteinRoutineStepDC pDataContract)
{
base.MergeWithDC(pEntity, pDataContract);
@@ -20,6 +22,10 @@ namespace BeWo.Service.DCEntityMapper
pDataContract.Position = pEntity.Position;
pDataContract.PromptReference = MapperFactory.AiPromptbausteinPrompt.MapToNewDC(pEntity.PromptReference);
pDataContract.ReferenceVersion = pEntity.ReferenceVersion;
+ pDataContract.IsValid = (pEntity.IsActive == ActivationTypeId.Active)
+ && (pDataContract.PromptReference.Creator == null
+ || pDataContract.PromptReference.Creator.EmployeeOid == CurrentUser.Oid
+ || pDataContract.PromptReference.IsPublic);
return pDataContract;
}
diff --git a/Shared/DataContracts/Feature/AI/AiPromptbausteinRoutineStepDC.cs b/Shared/DataContracts/Feature/AI/AiPromptbausteinRoutineStepDC.cs
index 29d504bbe..06b1f5e46 100644
--- a/Shared/DataContracts/Feature/AI/AiPromptbausteinRoutineStepDC.cs
+++ b/Shared/DataContracts/Feature/AI/AiPromptbausteinRoutineStepDC.cs
@@ -15,6 +15,7 @@ namespace BS.Shared.DataContracts.Feature.AI
[DataMember] public int Position { get; set; }
[DataMember] public AiPromptbausteinPromptDC PromptReference { get; set; }
[DataMember] public long ReferenceVersion { get; set; }
+ [DataMember] public bool IsValid { get; set; }
public IAiPromptbausteinPrompt Reference => PromptReference;
}