588 lines
18 KiB
C#
588 lines
18 KiB
C#
using BeWo.ServiceProxy;
|
|
using BeWo.Services;
|
|
using BeWo.ViewModel.ListViewModel;
|
|
using BeWo.ViewModel.View.Administration;
|
|
using BS.Shared;
|
|
using BS.Shared.DataContracts.Compact;
|
|
using DevExpress.Mvvm;
|
|
using DevExpress.Mvvm.POCO;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Forms;
|
|
using System.Windows.Input;
|
|
using MessageBox = System.Windows.MessageBox;
|
|
|
|
namespace BeWo.ViewModel.View.AI
|
|
{
|
|
public class AiPromptbausteinSelectionComplexViewModel : DialogViewModel, IAiPromptbausteinComplexViewModel
|
|
{
|
|
public event EventHandler<AbstractBaseVM> ItemAccepted;
|
|
public event EventHandler VMListReloaded;
|
|
|
|
private AiPromptbausteinFolderVM _SelectedFolder;
|
|
private AbstractBaseVM _SelectedItem;
|
|
|
|
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; }
|
|
|
|
public DelegateCommand OpenAddFolderDialogCommand { get; private set; }
|
|
public DelegateCommand OpenEditFolderDialogCommand { get; private set; }
|
|
public DelegateCommand CopyFolderCommand { get; private set; }
|
|
public DelegateCommand PasteFolderCommand { get; private set; }
|
|
public DelegateCommand DeleteFolderCommand { get; private set; }
|
|
|
|
public DelegateCommand OpenAddPromptDialogCommand { get; private set; }
|
|
public DelegateCommand OpenEditPromptDialogCommand { get; private set; }
|
|
public DelegateCommand CopyPromptCommand { get; private set; }
|
|
public DelegateCommand PastePromptCommand { get; private set; }
|
|
public DelegateCommand DeletePromptCommand { get; private set; }
|
|
public DelegateCommand ChangeFavoritenStatePromptCommand { get; private set; }
|
|
|
|
public DelegateCommand OpenAddRoutineDialogCommand { get; private set; }
|
|
public DelegateCommand OpenEditRoutineDialogCommand { get; private set; }
|
|
public DelegateCommand DeleteRoutineCommand { get; private set; }
|
|
public DelegateCommand ChangeFavoritenStateRoutineCommand { get; private set; }
|
|
|
|
public DelegateCommand OpenEditItemDialogCommand { get; private set; }
|
|
public DelegateCommand DeleteItemCommand { get; private set; }
|
|
public DelegateCommand ChangeFavoritenStateItemCommand { get; private set; }
|
|
|
|
public bool CanEditPromptbausteine { get; set; }
|
|
public bool HasCopiedFolder => CopiedFolder is object;
|
|
public bool HasCopiedPrompt => CopiedPrompt is object;
|
|
public CompactEmployeeDC CurrentEmployee => BeWoApp.CompactLoggedOnEmployee;
|
|
|
|
public bool CanOpenContextMenu { get; set; }
|
|
public string AcceptButtonText => CanOpenContextMenu ? "Absenden" : "Hinzufügen";
|
|
|
|
public AiPromptbausteinSelectionComplexViewModel()
|
|
{
|
|
SendCommand = new DelegateCommand(Send, CanSend, true);
|
|
|
|
if (BeWoApp.IsInDesignMode)
|
|
{
|
|
Folders = new AiPromptbausteinFolderListVM();
|
|
}
|
|
}
|
|
public AiPromptbausteinSelectionComplexViewModel(AiActionType aiActionType) : this()
|
|
{
|
|
AiActionType = aiActionType;
|
|
WindowService = BeWoApp.WindowService;
|
|
InitCommands();
|
|
}
|
|
public AiPromptbausteinSelectionComplexViewModel(AiActionType aiActionType, AiPromptbausteinFolderListVM viewModel, bool isFavorite = false, bool canOpen = true) : this(aiActionType)
|
|
{
|
|
LoadedActionType = aiActionType;
|
|
Folders = viewModel;
|
|
IsFavorite = isFavorite;
|
|
CanOpenContextMenu = canOpen;
|
|
}
|
|
|
|
private void InitCommands()
|
|
{
|
|
OpenAddFolderDialogCommand = new DelegateCommand(OpenAddFolderDialog, canOpenAddFolderDialog, false);
|
|
OpenEditFolderDialogCommand = new DelegateCommand(OpenEditFolderDialog, canOpenEditFolderDialog, false);
|
|
DeleteFolderCommand = new DelegateCommand(DeleteFolder, canDeleteFolder, false);
|
|
|
|
OpenAddPromptDialogCommand = new DelegateCommand(OpenAddPromptDialog, canOpenAddPromptDialog, false);
|
|
OpenEditPromptDialogCommand = new DelegateCommand(OpenEditPromptDialog, canOpenEditPromptDialog, false);
|
|
CopyPromptCommand = new DelegateCommand(CopyPrompt, canCopyPrompt, false);
|
|
PastePromptCommand = new DelegateCommand(PastePrompt, canPastePrompt, false);
|
|
DeletePromptCommand = new DelegateCommand(OpenDeletePromptDialog, canOpenDeletePromptDialog, false);
|
|
ChangeFavoritenStatePromptCommand = new DelegateCommand(ChangeFavoritenStatePrompt, canChangeFavoritenStatePrompt, false);
|
|
|
|
OpenAddRoutineDialogCommand = new DelegateCommand(OpenAddRoutineDialog, canOpenAddRoutineDialog, false);
|
|
OpenEditRoutineDialogCommand = new DelegateCommand(OpenEditRoutineDialog, canOpenEditRoutineDialog, false);
|
|
DeleteRoutineCommand = new DelegateCommand(OpenDeleteRoutineDialog, canOpenDeleteRoutineDialog, false);
|
|
ChangeFavoritenStateRoutineCommand = new DelegateCommand(ChangeFavoritenStateRoutine, canChangeFavoritenStateRoutine, false);
|
|
|
|
Action executeEditItem = () => ExecuteItem(OpenEditPromptDialog, OpenEditRoutineDialog);
|
|
Func<bool> canExecuteEditItem = () => canExecuteItem(canOpenEditPromptDialog, canOpenEditRoutineDialog);
|
|
OpenEditItemDialogCommand = new DelegateCommand(executeEditItem, canExecuteEditItem, true);
|
|
|
|
Action executeDeleteItem = () => ExecuteItem(OpenDeletePromptDialog, OpenDeleteRoutineDialog);
|
|
Func<bool> canExecuteDeleteItem = () => canExecuteItem(canOpenDeletePromptDialog, canOpenDeleteRoutineDialog);
|
|
DeleteItemCommand = new DelegateCommand(executeDeleteItem, canExecuteDeleteItem, true);
|
|
|
|
Action executeFavoriteItem = () => ExecuteItem(ChangeFavoritenStatePrompt, ChangeFavoritenStateRoutine);
|
|
Func<bool> canExecuteFavoriteItem = () => canExecuteItem(canChangeFavoritenStatePrompt, canChangeFavoritenStateRoutine);
|
|
ChangeFavoritenStateItemCommand = new DelegateCommand(executeFavoriteItem, canExecuteFavoriteItem, true);
|
|
|
|
CanEditPromptbausteine = BeWoApp.HasLoggedOnUserRight(UserRightType.AiModulePromptbausteineEdit);
|
|
}
|
|
|
|
public AiPromptbausteinFolderVM SelectedFolder
|
|
{
|
|
get => _SelectedFolder;
|
|
set
|
|
{
|
|
var success = SetProperty(ref _SelectedFolder, value, nameof(SelectedFolder));
|
|
|
|
if (SelectedItem is AiPromptbausteinPromptVM vm)
|
|
{
|
|
SelectedItem = null;
|
|
}
|
|
|
|
if (!success)
|
|
return;
|
|
|
|
UpdateFolderCommands();
|
|
UpdatePromptCommands();
|
|
}
|
|
}
|
|
public AbstractBaseVM SelectedItem
|
|
{
|
|
get => _SelectedItem;
|
|
set
|
|
{
|
|
SetProperty(ref _SelectedItem, value, nameof(SelectedItem));
|
|
SendCommand.RaiseCanExecuteChanged();
|
|
UpdateItemCommands();
|
|
}
|
|
}
|
|
public AiPromptbausteinFolderListVM Folders { get; private set; }
|
|
public AiActionType LoadedActionType { get; set; }
|
|
|
|
public bool HasFavoriten
|
|
{
|
|
get
|
|
{
|
|
#if DEBUG
|
|
if (BeWoApp.IsInDesignMode)
|
|
return true;
|
|
#endif
|
|
|
|
return Folders.Count > 3 && (Folders.VMList[0].Prompts.Count > 0 || Folders.VMList[0].Routines.Count > 0);
|
|
}
|
|
}
|
|
|
|
public void ResetSelection()
|
|
{
|
|
// Bisherige Tree-Selektion zurücknehmen, damit nicht zwei Knoten als selektiert markiert sind.
|
|
if (SelectedFolder != null)
|
|
SelectedFolder.IsSelected = false;
|
|
|
|
SelectedFolder = null;
|
|
|
|
// Favoriten-Popup: Favoriten (VMList[0]), sonst "Eigene" (VMList[1]) vorauswählen.
|
|
var target = IsFavorite
|
|
? (Folders.VMList.Count > 0 ? Folders.VMList[0] : null)
|
|
: (Folders.VMList.Count > 1 ? Folders.VMList[1] : null);
|
|
|
|
if (target != null)
|
|
{
|
|
target.IsSelected = true;
|
|
SelectedFolder = target;
|
|
}
|
|
}
|
|
public void Send()
|
|
{
|
|
var selected_prompt = SelectedItem;
|
|
|
|
Close();
|
|
|
|
ItemAccepted?.Invoke(this, selected_prompt);
|
|
}
|
|
public bool CanSend()
|
|
{
|
|
return SelectedItem is AiPromptbausteinPromptVM || (SelectedItem is AiPromptbausteinRoutineVM routine && routine.IsValid);
|
|
}
|
|
public void InitVMList()
|
|
{
|
|
if (Folders is object && LoadedActionType == AiActionType)
|
|
return;
|
|
|
|
LoadedActionType = AiActionType;
|
|
|
|
VMFactory.CreateAiPromptbausteinFolderListVMAsync(AiActionType, UpdateVMList);
|
|
}
|
|
public void ReloadVMList(bool notify = true)
|
|
{
|
|
VMFactory.CreateAiPromptbausteinFolderListVMAsync(AiActionType, UpdateVMList);
|
|
|
|
if(notify)
|
|
VMListReloaded?.Invoke(this, EventArgs.Empty);
|
|
}
|
|
private void UpdateVMList(AiPromptbausteinFolderListVM new_list)
|
|
{
|
|
Folders = new_list;
|
|
|
|
FirePropertyChanged(nameof(Folders));
|
|
|
|
if (Folders.VMList.Count > 0 && Folders.VMList[0].DataContract.Oid == -5)
|
|
{
|
|
Favoriten = Folders.VMList[0];
|
|
|
|
if (IsFavorite)
|
|
SelectedFolder = Favoriten;
|
|
}
|
|
|
|
// "Eigene" (VMList[1]) im normalen Modus vorauswählen.
|
|
if (!IsFavorite && Folders.VMList.Count > 1)
|
|
Folders.VMList[1].IsSelected = true;
|
|
|
|
FirePropertyChanged(nameof(HasFavoriten));
|
|
}
|
|
|
|
public void UpdateFolderCommands()
|
|
{
|
|
OpenAddFolderDialogCommand?.RaiseCanExecuteChanged();
|
|
OpenEditFolderDialogCommand?.RaiseCanExecuteChanged();
|
|
CopyFolderCommand?.RaiseCanExecuteChanged();
|
|
PasteFolderCommand?.RaiseCanExecuteChanged();
|
|
DeleteFolderCommand?.RaiseCanExecuteChanged();
|
|
}
|
|
public void UpdatePromptCommands()
|
|
{
|
|
OpenAddPromptDialogCommand?.RaiseCanExecuteChanged();
|
|
OpenEditPromptDialogCommand?.RaiseCanExecuteChanged();
|
|
CopyPromptCommand?.RaiseCanExecuteChanged();
|
|
PastePromptCommand?.RaiseCanExecuteChanged();
|
|
DeletePromptCommand?.RaiseCanExecuteChanged();
|
|
ChangeFavoritenStatePromptCommand?.RaiseCanExecuteChanged();
|
|
|
|
OpenAddRoutineDialogCommand?.RaiseCanExecuteChanged();
|
|
OpenEditRoutineDialogCommand?.RaiseCanExecuteChanged();
|
|
DeleteRoutineCommand?.RaiseCanExecuteChanged();
|
|
ChangeFavoritenStateRoutineCommand?.RaiseCanExecuteChanged();
|
|
}
|
|
public void UpdateItemCommands()
|
|
{
|
|
OpenEditItemDialogCommand?.RaiseCanExecuteChanged();
|
|
DeleteItemCommand?.RaiseCanExecuteChanged();
|
|
ChangeFavoritenStateItemCommand?.RaiseCanExecuteChanged();
|
|
}
|
|
|
|
// --- Folder Commands ---
|
|
|
|
void OpenAddFolderDialog()
|
|
{
|
|
var sel_folder = SelectedFolder;
|
|
var new_vm = sel_folder.SubFolders.CreateNewVM();
|
|
|
|
new_vm.Creator = CurrentEmployee;
|
|
new_vm.Parent = sel_folder;
|
|
new_vm.ParentFolderOid = sel_folder?.DataContract?.Oid;
|
|
new_vm.CanAddFolder = true;
|
|
new_vm.CanAddPrompt = true;
|
|
new_vm.CanAddRoutine = true;
|
|
new_vm.CanEdit = true;
|
|
new_vm.ActionType = AiActionType;
|
|
|
|
var vm = new AiPromptbausteinFolderViewModel(new_vm, true);
|
|
|
|
vm.DataSaved += (s, new_dc) =>
|
|
{
|
|
ReloadVMList();
|
|
};
|
|
|
|
Close();
|
|
|
|
WindowService.Show(vm);
|
|
}
|
|
void OpenEditFolderDialog()
|
|
{
|
|
var sel_folder = SelectedFolder;
|
|
var sel_dc = sel_folder.CopyToEmptyDataContract();
|
|
sel_dc.CanEdit = SelectedFolder.CanEdit;
|
|
sel_dc.Oid = sel_folder.DataContract.Oid;
|
|
sel_dc.Version = sel_folder.DataContract.Version;
|
|
var edit_vm = new AiPromptbausteinFolderVM(sel_dc);
|
|
|
|
var vm = new AiPromptbausteinFolderViewModel(edit_vm, false);
|
|
|
|
vm.DataSaved += (s, new_dc) =>
|
|
{
|
|
ReloadVMList();
|
|
};
|
|
|
|
Close();
|
|
|
|
WindowService.Show(vm);
|
|
}
|
|
void DeleteFolder()
|
|
{
|
|
var sel_folder = SelectedFolder;
|
|
var parent = sel_folder.Parent;
|
|
|
|
var result = MessageBox.Show("Möchten Sie den ausgewählten Ordner wirklich löschen?", "Hinweis", MessageBoxButton.OKCancel);
|
|
if (result != MessageBoxResult.OK)
|
|
return;
|
|
|
|
var delete_dc = sel_folder.CommitToDataContract();
|
|
|
|
ServiceFacade.DoAiEnhancedServiceAsnyc(x => x.DeleteAiPromptbausteinFolder(delete_dc),
|
|
() => ReloadVMList());
|
|
}
|
|
|
|
bool canOpenAddFolderDialog() => CanEditPromptbausteine && (SelectedFolder?.CanAddFolder ?? true);
|
|
bool canOpenEditFolderDialog() => CanEditPromptbausteine && (SelectedFolder?.CanEdit ?? false);
|
|
bool canDeleteFolder() => CanEditPromptbausteine && (SelectedFolder?.CanEdit ?? false);
|
|
|
|
// --- Prompt Commands ---
|
|
void OpenAddPromptDialog()
|
|
{
|
|
var sel_folder = SelectedFolder;
|
|
var new_vm = sel_folder.SubPrompts.CreateNewVM();
|
|
|
|
new_vm.Creator = CurrentEmployee;
|
|
new_vm.ParentFolderOid = sel_folder.DataContract.Oid;
|
|
new_vm.ShowPrompt = true;
|
|
new_vm.ShowPromptByTenant = true;
|
|
new_vm.CanEdit = true;
|
|
new_vm.ActionType = AiActionType;
|
|
|
|
var vm = new AiPromptbausteinPromptViewModel(new_vm);
|
|
|
|
vm.DataSaved += (s, e) =>
|
|
{
|
|
ReloadVMList();
|
|
};
|
|
|
|
Close();
|
|
|
|
WindowService.Show(vm);
|
|
}
|
|
void OpenEditPromptDialog()
|
|
{
|
|
var sel_prompt = SelectedItem as AiPromptbausteinPromptVM;
|
|
|
|
if (SelectedItem is null)
|
|
throw new Exception("invalid operation");
|
|
|
|
var sel_dc = sel_prompt.CopyToEmptyDataContract();
|
|
sel_dc.CanEdit = sel_prompt.CanEdit;
|
|
sel_dc.Oid = sel_prompt.DataContract.Oid;
|
|
sel_dc.Version = sel_prompt.DataContract.Version;
|
|
var edit_vm = new AiPromptbausteinPromptVM(sel_dc);
|
|
|
|
var vm = new AiPromptbausteinPromptViewModel(edit_vm);
|
|
|
|
vm.DataSaved += (s, e) =>
|
|
{
|
|
ReloadVMList();
|
|
};
|
|
|
|
Close();
|
|
|
|
WindowService.Show(vm);
|
|
}
|
|
|
|
void CopyPrompt()
|
|
{
|
|
CopiedPrompt = SelectedItem as AiPromptbausteinPromptVM;
|
|
}
|
|
void PastePrompt()
|
|
{
|
|
var copied_dc = CopiedPrompt.CommitToDataContract();
|
|
copied_dc.Creator = CurrentEmployee;
|
|
copied_dc.CanEdit = true;
|
|
copied_dc.IsPublic = false;
|
|
copied_dc.IsFavorite = false;
|
|
copied_dc.Oid = null;
|
|
copied_dc.Version = null;
|
|
copied_dc.ParentFolderOid = SelectedFolder.DataContract.Oid;
|
|
copied_dc.ActionType = AiActionType;
|
|
copied_dc.PromptId = null;
|
|
copied_dc.ShowPrompt = true;
|
|
copied_dc.ShowPromptByTenant = true;
|
|
copied_dc.IsOwnsoftPrompt = false;
|
|
|
|
var copied_vm = new AiPromptbausteinPromptVM(copied_dc);
|
|
|
|
SelectedFolder.SubPrompts.VMList.Add(copied_vm);
|
|
ServiceFacade.DoAiEnhancedServiceAsnyc(x => x.InsertAiPromptbausteinPrompt(copied_dc),
|
|
new_dc =>
|
|
{
|
|
copied_vm.UpdateByDataContract(new_dc);
|
|
SelectedFolder.SubPrompts.VMList.Add(copied_vm);
|
|
SelectedItem = copied_vm;
|
|
});
|
|
}
|
|
void OpenDeletePromptDialog()
|
|
{
|
|
var sel_prompt = SelectedItem as AiPromptbausteinPromptVM;
|
|
var folder = SelectedFolder;
|
|
|
|
var txt = "Möchten Sie den ausgewählten Prompt wirklich löschen?";
|
|
var result = MessageBox.Show(txt, "Hinweis", MessageBoxButton.OKCancel);
|
|
|
|
if (result != MessageBoxResult.OK)
|
|
return;
|
|
|
|
if (sel_prompt.IsFavorite)
|
|
{
|
|
sel_prompt.IsFavorite = false;
|
|
}
|
|
|
|
var delete_dc = sel_prompt.CommitToDataContract();
|
|
ServiceFacade.DoAiEnhancedServiceAsnyc(x => x.DeleteAiPromptbausteinPrompt(delete_dc),
|
|
() =>
|
|
{
|
|
ReloadVMList();
|
|
});
|
|
}
|
|
|
|
void ChangeFavoritenStatePrompt()
|
|
{
|
|
var sel_prompt = SelectedItem as AiPromptbausteinPromptVM;
|
|
|
|
sel_prompt.IsFavorite = !sel_prompt.IsFavorite;
|
|
|
|
var edit_dc = sel_prompt.CommitToDataContract();
|
|
|
|
ServiceFacade.DoAiEnhancedServiceAsnyc(x => x.UpdateAiPromptbausteinPrompt(edit_dc),
|
|
new_dc =>
|
|
{
|
|
ReloadVMList();
|
|
});
|
|
}
|
|
|
|
bool canOpenAddPromptDialog()
|
|
{
|
|
return CanEditPromptbausteine && (SelectedFolder?.CanAddPrompt ?? false);
|
|
}
|
|
bool canOpenEditPromptDialog()
|
|
{
|
|
return SelectedItem as AiPromptbausteinPromptVM is object;
|
|
}
|
|
bool canCopyPrompt()
|
|
{
|
|
return CanEditPromptbausteine && SelectedItem is AiPromptbausteinPromptVM prompt && prompt.ShowPrompt;
|
|
}
|
|
bool canPastePrompt()
|
|
{
|
|
return canOpenAddPromptDialog() && HasCopiedPrompt;
|
|
}
|
|
bool canOpenDeletePromptDialog()
|
|
{
|
|
return CanEditPromptbausteine && ((SelectedItem as AiPromptbausteinPromptVM)?.CanEdit ?? false);
|
|
}
|
|
|
|
bool canChangeFavoritenStatePrompt()
|
|
{
|
|
return SelectedItem as AiPromptbausteinPromptVM is object;
|
|
}
|
|
|
|
// --- Routine Commands
|
|
|
|
void OpenAddRoutineDialog()
|
|
{
|
|
var sel_folder = SelectedFolder;
|
|
var new_vm = sel_folder.SubRoutines.CreateNewVM();
|
|
|
|
new_vm.Creator = CurrentEmployee;
|
|
new_vm.ParentFolderOid = sel_folder.DataContract.Oid;
|
|
new_vm.CanEdit = true;
|
|
new_vm.ActionType = AiActionType;
|
|
|
|
var vm = new AiPromptbausteinRoutineViewModel(new_vm, Folders);
|
|
|
|
vm.DataSaved += (s, e) =>
|
|
{
|
|
ReloadVMList();
|
|
};
|
|
|
|
Close();
|
|
|
|
WindowService.Show(vm);
|
|
}
|
|
void OpenEditRoutineDialog()
|
|
{
|
|
var sel_prompt = SelectedItem as AiPromptbausteinRoutineVM;
|
|
|
|
if (SelectedItem is null)
|
|
throw new Exception("invalid operation");
|
|
|
|
var sel_dc = sel_prompt.CopyToEmptyDataContract();
|
|
sel_dc.CanEdit = sel_prompt.CanEdit;
|
|
sel_dc.Oid = sel_prompt.DataContract.Oid;
|
|
sel_dc.Version = sel_prompt.DataContract.Version;
|
|
var edit_vm = new AiPromptbausteinRoutineVM(sel_dc);
|
|
|
|
var vm = new AiPromptbausteinRoutineViewModel(edit_vm, Folders);
|
|
|
|
vm.DataSaved += (s, e) =>
|
|
{
|
|
ReloadVMList();
|
|
};
|
|
|
|
Close();
|
|
|
|
WindowService.Show(vm);
|
|
}
|
|
void OpenDeleteRoutineDialog()
|
|
{
|
|
var sel_prompt = SelectedItem as AiPromptbausteinRoutineVM;
|
|
var folder = SelectedFolder;
|
|
|
|
var txt = "Möchten Sie die ausgewählte Routine wirklich löschen?";
|
|
var result = MessageBox.Show(txt, "Hinweis", MessageBoxButton.OKCancel);
|
|
|
|
if (result != MessageBoxResult.OK)
|
|
return;
|
|
|
|
if (sel_prompt.IsFavorite)
|
|
{
|
|
sel_prompt.IsFavorite = false;
|
|
}
|
|
|
|
var delete_dc = sel_prompt.CommitToDataContract();
|
|
ServiceFacade.DoAiEnhancedServiceAsnyc(x => x.DeleteAiPromptbausteinRoutine(delete_dc),
|
|
() =>
|
|
{
|
|
ReloadVMList();
|
|
});
|
|
}
|
|
void ChangeFavoritenStateRoutine()
|
|
{
|
|
var sel_routine = SelectedItem as AiPromptbausteinRoutineVM;
|
|
|
|
sel_routine.IsFavorite = !sel_routine.IsFavorite;
|
|
|
|
var edit_dc = sel_routine.CommitToDataContract();
|
|
|
|
ServiceFacade.DoAiEnhancedServiceAsnyc(x => x.UpdateAiPromptbausteinRoutine(edit_dc),
|
|
new_dc =>
|
|
{
|
|
ReloadVMList();
|
|
});
|
|
}
|
|
|
|
bool canOpenAddRoutineDialog() => CanEditPromptbausteine && (SelectedFolder?.CanAddPrompt ?? false);
|
|
bool canOpenEditRoutineDialog() => SelectedItem is AiPromptbausteinRoutineVM;
|
|
bool canOpenDeleteRoutineDialog() => CanEditPromptbausteine && ((SelectedItem as AiPromptbausteinRoutineVM)?.CanEdit ?? false);
|
|
bool canChangeFavoritenStateRoutine() => SelectedItem is AiPromptbausteinRoutineVM;
|
|
|
|
void ExecuteItem(Action prompt_action, Action routine_action)
|
|
{
|
|
if (SelectedItem is AiPromptbausteinPromptVM)
|
|
prompt_action();
|
|
else if (SelectedItem is AiPromptbausteinRoutineVM)
|
|
routine_action();
|
|
else
|
|
throw new NotImplementedException("item is not AiPromptbausteinPromptVM or AiPromptbausteinRoutineVM");
|
|
}
|
|
bool canExecuteItem(Func<bool> prompt_func, Func<bool> routine_func)
|
|
{
|
|
if (SelectedItem is AiPromptbausteinPromptVM)
|
|
return prompt_func();
|
|
else if (SelectedItem is AiPromptbausteinRoutineVM)
|
|
return routine_func();
|
|
|
|
return false;
|
|
}
|
|
}
|
|
}
|