123 lines
3.4 KiB
C#
123 lines
3.4 KiB
C#
using BeWo.ServiceProxy;
|
|
using BeWo.ViewModel.ListViewModel;
|
|
using BS.Shared.DataContracts.Feature.AI;
|
|
using DevExpress.Mvvm;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Runtime.InteropServices.WindowsRuntime;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Input;
|
|
|
|
namespace BeWo.ViewModel.View.Administration
|
|
{
|
|
public class AiPromptbausteinRoutineViewModel : AcceptCancelDialogViewModel<AiPromptbausteinRoutineDC, AiPromptbausteinRoutineVM>
|
|
{
|
|
private readonly bool _IsNew;
|
|
public AiPromptbausteinRoutineStepVM _SelectedStep;
|
|
|
|
public AiPromptbausteinFolderListVM FolderListVM { get; set; }
|
|
|
|
public ICommand DeleteStepCommand { get; private set; }
|
|
public ICommand MoveStepUpCommand { get; private set; }
|
|
public ICommand MoveStepDownCommand { get; private set; }
|
|
|
|
public AiPromptbausteinRoutineStepVM SelectedStep
|
|
{
|
|
get => _SelectedStep;
|
|
set => SetProperty(ref _SelectedStep, value, nameof(SelectedStep));
|
|
}
|
|
|
|
public AiPromptbausteinRoutineViewModel(AiPromptbausteinRoutineVM viewModel, AiPromptbausteinFolderListVM folders) : base(viewModel)
|
|
{
|
|
FolderListVM = folders;
|
|
|
|
ViewModel.Steps.VMList.ListChanged += (s, e) =>
|
|
{
|
|
SaveCommand.RaiseCanExecuteChanged();
|
|
};
|
|
|
|
DeleteStepCommand = new DelegateCommand<AiPromptbausteinRoutineStepVM>(DeleteStep, canDeleteStep);
|
|
MoveStepUpCommand = new DelegateCommand<AiPromptbausteinRoutineStepVM>(MoveStepUp, canMoveStepUp);
|
|
MoveStepDownCommand = new DelegateCommand<AiPromptbausteinRoutineStepVM>(MoveStepDown, canMoveStepDown);
|
|
}
|
|
|
|
void DeleteStep(AiPromptbausteinRoutineStepVM step)
|
|
{
|
|
ViewModel.Steps.VMList.Remove(step);
|
|
}
|
|
|
|
void MoveStepUp(AiPromptbausteinRoutineStepVM step)
|
|
{
|
|
swap(step, -1);
|
|
}
|
|
|
|
void MoveStepDown(AiPromptbausteinRoutineStepVM step)
|
|
{
|
|
swap(step, 1);
|
|
}
|
|
|
|
bool canDeleteStep(AiPromptbausteinRoutineStepVM step)
|
|
{
|
|
return step is object;
|
|
}
|
|
|
|
bool canMoveStepUp(AiPromptbausteinRoutineStepVM step)
|
|
{
|
|
return step is object && ViewModel.Steps.Count > 1 && ViewModel.Steps.VMList.First() != step;
|
|
}
|
|
|
|
bool canMoveStepDown(AiPromptbausteinRoutineStepVM step)
|
|
{
|
|
return step is object && ViewModel.Steps.Count > 1 && ViewModel.Steps.VMList.Last() != step;
|
|
}
|
|
|
|
protected override bool canSave()
|
|
{
|
|
return base.canSave() && !string.IsNullOrWhiteSpace(ViewModel.Title) && (ViewModel.Steps?.VMList.Any() ?? false);
|
|
}
|
|
|
|
protected override void Save()
|
|
{
|
|
var dc = ViewModel.CommitToDataContract();
|
|
|
|
if (ViewModel.IsNew)
|
|
{
|
|
ServiceFacade.DoAiEnhancedServiceAsnyc(x => x.InsertAiPromptbausteinRoutine(dc),
|
|
DataSave);
|
|
}
|
|
else
|
|
{
|
|
ServiceFacade.DoAiEnhancedServiceAsnyc(x => x.UpdateAiPromptbausteinRoutine(dc),
|
|
DataSave);
|
|
}
|
|
}
|
|
|
|
private void swap(AiPromptbausteinRoutineStepVM step_x, int offset_y)
|
|
{
|
|
var id_x = ViewModel.Steps.VMList.IndexOf(step_x);
|
|
var id_y = id_x + offset_y;
|
|
var step_y = ViewModel.Steps.VMList[id_y];
|
|
|
|
var prompt_x = step_x.PromptReference;
|
|
var version_x = step_x.ReferenceVersion;
|
|
var valid_x = step_x.IsValid;
|
|
|
|
var prompt_y = step_y.PromptReference;
|
|
var version_y = step_y.ReferenceVersion;
|
|
var valid_y = step_y.IsValid;
|
|
|
|
step_x.PromptReference = prompt_y;
|
|
step_x.ReferenceVersion = version_y;
|
|
step_x.SetIsValid(valid_y);
|
|
|
|
step_y.PromptReference = prompt_x;
|
|
step_y.ReferenceVersion = version_x;
|
|
step_y.SetIsValid(valid_x);
|
|
|
|
SelectedStep = step_y;
|
|
}
|
|
}
|
|
}
|