From 5a34c0dc041b01114394eff0d5b7e847810db058 Mon Sep 17 00:00:00 2001 From: Rene Evertz Date: Fri, 9 Jan 2026 14:46:32 +0100 Subject: [PATCH] Prompt Result Fenster + Info nur bei Selected + Welche DCs sollen gespeichert werden --- BeWo/BeWo.csproj | 10 ++- BeWo/Services/BeWoWindowService.cs | 16 +++- BeWo/Services/IBeWoWindowService.cs | 2 +- .../AI/AiPromptbausteinActionResultView.xaml | 44 ++++++++++ .../AiPromptbausteinActionResultView.xaml.cs | 33 ++++++++ .../AI/AiPromptbausteinComplexTreeView.xaml | 4 +- .../Accounting/GkvAbrechnungOverview.xaml.cs | 2 +- BeWo/ViewModel/AiPromptbausteinFolderVM.cs | 1 + BeWo/ViewModel/AiPromptbausteinPromptVM.cs | 9 +- .../AiPromptbausteinFolderListVM.cs | 17 ++++ .../ListViewModel/ServiceRecordListVM.cs | 82 ++++++++++++++---- .../View/AI/AiConversationChatViewModel.cs | 1 - .../AiPromptbausteinActionResultViewModel.cs | 79 ++++++++++++++++++ .../AI/AiPromptbausteinSelectionViewModel.cs | 1 - .../AiPromptbausteinComplexTreeViewModel.cs | 83 ++++++++++++++++++- .../AiPromptbausteinDetailViewModel.cs | 1 - .../AiPromptbausteinFolderViewModel.cs | 3 +- .../AiPromptbausteinPromptViewModel.cs | 3 +- .../GkvAbrechnungDialogViewModel.cs | 2 +- 19 files changed, 359 insertions(+), 34 deletions(-) create mode 100644 BeWo/View/Detail/AI/AiPromptbausteinActionResultView.xaml create mode 100644 BeWo/View/Detail/AI/AiPromptbausteinActionResultView.xaml.cs create mode 100644 BeWo/ViewModel/View/AI/AiPromptbausteinActionResultViewModel.cs rename BeWo/ViewModel/View/{Dialogs => Gkv}/GkvAbrechnungDialogViewModel.cs (91%) diff --git a/BeWo/BeWo.csproj b/BeWo/BeWo.csproj index eb48339a8..373beee23 100644 --- a/BeWo/BeWo.csproj +++ b/BeWo/BeWo.csproj @@ -142,10 +142,14 @@ + - + + + AiPromptbausteinActionResultView.xaml + AiPromptbausteinPromptView.xaml @@ -217,6 +221,10 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + MSBuild:Compile Designer diff --git a/BeWo/Services/BeWoWindowService.cs b/BeWo/Services/BeWoWindowService.cs index 00de94171..fec4dbedb 100644 --- a/BeWo/Services/BeWoWindowService.cs +++ b/BeWo/Services/BeWoWindowService.cs @@ -4,7 +4,6 @@ using BeWo.View.Windows; using BeWo.ViewModel; using BeWo.ViewModel.View.Administration; using BeWo.ViewModel.View.AI; -using BeWo.ViewModel.View.Dialogs; using BS.Shared; using System; using System.Collections.Generic; @@ -23,6 +22,7 @@ using BeWo.ViewModel.View; using System.Windows.Controls.Primitives; using static DevExpress.XtraPrinting.Native.ExportOptionsPropertiesNames; using DevExpress.Mvvm.Native; +using BeWo.ViewModel.View.Gkv; namespace BeWo.Services { @@ -64,6 +64,10 @@ namespace BeWo.Services { ShowAiPromptbausteinPromptPopup(viewModel4); } + else if(windowViewModel is AiPromptbausteinActionResultViewModel viewModel5) + { + ShowAiPromptbausteinActionResultPopup(viewModel5); + } else { throw new NotImplementedException($"type not implemented: {typeof(T)}"); @@ -121,6 +125,16 @@ namespace BeWo.Services }; Show("KI Promptbaustein Prompt", control, viewModel, options); } + public void ShowAiPromptbausteinActionResultPopup(AiPromptbausteinActionResultViewModel viewModel) + { + var control = new AiPromptbausteinActionResultView(viewModel); + var options = new BeWoWindowOptions() + { + Height = 400, + Width = 600 + }; + Show("KI Promptbaustein Ergebnis", control, viewModel, options); + } public void ShowGkvAbrechnungDetailWindow(GkvAbrechnungDialogViewModel vm) diff --git a/BeWo/Services/IBeWoWindowService.cs b/BeWo/Services/IBeWoWindowService.cs index ebb00c6d3..1fff6334c 100644 --- a/BeWo/Services/IBeWoWindowService.cs +++ b/BeWo/Services/IBeWoWindowService.cs @@ -3,7 +3,7 @@ using BeWo.ViewModel.Light; using BeWo.ViewModel.View; using BeWo.ViewModel.View.Administration; using BeWo.ViewModel.View.AI; -using BeWo.ViewModel.View.Dialogs; +using BeWo.ViewModel.View.Gkv; using BS.Shared; using System; using System.Collections.Generic; diff --git a/BeWo/View/Detail/AI/AiPromptbausteinActionResultView.xaml b/BeWo/View/Detail/AI/AiPromptbausteinActionResultView.xaml new file mode 100644 index 000000000..4001e5c91 --- /dev/null +++ b/BeWo/View/Detail/AI/AiPromptbausteinActionResultView.xaml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/BeWo/View/Detail/AI/AiPromptbausteinActionResultView.xaml.cs b/BeWo/View/Detail/AI/AiPromptbausteinActionResultView.xaml.cs new file mode 100644 index 000000000..d44561242 --- /dev/null +++ b/BeWo/View/Detail/AI/AiPromptbausteinActionResultView.xaml.cs @@ -0,0 +1,33 @@ +using BeWo.ViewModel.View.AI; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace BeWo.View.Detail.AI +{ + /// + /// Interaktionslogik für AiPromptbausteinActionResultView.xaml + /// + public partial class AiPromptbausteinActionResultView : UserControl + { + public AiPromptbausteinActionResultViewModel ViewModel { get; set; } + + public AiPromptbausteinActionResultView( AiPromptbausteinActionResultViewModel viewModel = null) + { + InitializeComponent(); + + DataContext = ViewModel = viewModel; + } + } +} diff --git a/BeWo/View/Detail/AI/AiPromptbausteinComplexTreeView.xaml b/BeWo/View/Detail/AI/AiPromptbausteinComplexTreeView.xaml index d1cb1e92b..a74102692 100644 --- a/BeWo/View/Detail/AI/AiPromptbausteinComplexTreeView.xaml +++ b/BeWo/View/Detail/AI/AiPromptbausteinComplexTreeView.xaml @@ -24,7 +24,9 @@ diff --git a/BeWo/View/Detail/Accounting/GkvAbrechnungOverview.xaml.cs b/BeWo/View/Detail/Accounting/GkvAbrechnungOverview.xaml.cs index 0d0ee04e6..0e093574a 100644 --- a/BeWo/View/Detail/Accounting/GkvAbrechnungOverview.xaml.cs +++ b/BeWo/View/Detail/Accounting/GkvAbrechnungOverview.xaml.cs @@ -20,7 +20,7 @@ using BeWo.ViewModel; using BeWo.ViewModel.Light; using BeWo.ViewModel.ListViewModel; using BeWo.ViewModel.ListViewModel.Light; -using BeWo.ViewModel.View.Dialogs; +using BeWo.ViewModel.View.Gkv; using BS.Shared; using BS.Shared.AppSender; using BS.Shared.Core; diff --git a/BeWo/ViewModel/AiPromptbausteinFolderVM.cs b/BeWo/ViewModel/AiPromptbausteinFolderVM.cs index 22039edb1..7b7d232d5 100644 --- a/BeWo/ViewModel/AiPromptbausteinFolderVM.cs +++ b/BeWo/ViewModel/AiPromptbausteinFolderVM.cs @@ -113,6 +113,7 @@ namespace BeWo.ViewModel public AiPromptbausteinFolderVM Parent { get; set; } public FontWeight FontWeight => !IsNew && ParentFolderOid is null ? FontWeights.SemiBold : FontWeights.Medium; + public bool HasSubFolders => SubFolders is object && SubFolders.Count > 0; public string Displayname { get diff --git a/BeWo/ViewModel/AiPromptbausteinPromptVM.cs b/BeWo/ViewModel/AiPromptbausteinPromptVM.cs index 24ca4bf3b..91da2b39f 100644 --- a/BeWo/ViewModel/AiPromptbausteinPromptVM.cs +++ b/BeWo/ViewModel/AiPromptbausteinPromptVM.cs @@ -19,6 +19,7 @@ namespace BeWo.ViewModel private bool _ShowPromptByTenant; private bool _IsOwnsoftPrompt; private string _OwnsoftRefLink; + private bool _IsSelected; public AiPromptbausteinPromptVM(AiPromptbausteinPromptDC dc) : base(dc, dc.Oid) { @@ -97,9 +98,15 @@ namespace BeWo.ViewModel set => DataContract.CanEdit = value; } + public bool IsSelected + { + get => _IsSelected; + set => SetProperty(ref _IsSelected, value, nameof(IsInfoVisible)); + } + public bool IsInfoVisible { - get => IsOwnsoftPrompt && !string.IsNullOrWhiteSpace(OwnsoftRefLink); + get => IsOwnsoftPrompt && !string.IsNullOrWhiteSpace(OwnsoftRefLink) && IsSelected; } protected override void InitByDataContract(AiPromptbausteinPromptDC pDataContract) diff --git a/BeWo/ViewModel/ListViewModel/AiPromptbausteinFolderListVM.cs b/BeWo/ViewModel/ListViewModel/AiPromptbausteinFolderListVM.cs index f9e790897..a86318d12 100644 --- a/BeWo/ViewModel/ListViewModel/AiPromptbausteinFolderListVM.cs +++ b/BeWo/ViewModel/ListViewModel/AiPromptbausteinFolderListVM.cs @@ -17,5 +17,22 @@ namespace BeWo.ViewModel.ListViewModel vm.Parent = parent; } } + + public bool ContainsDirtyObject() + { + if (IsDirty) + return true; + + foreach (var vm in VMList) + { + if (vm.SubFolders is object && vm.SubFolders.ContainsDirtyObject()) + return true; + + if (vm.SubPrompts is object && vm.SubPrompts.IsDirty) + return true; + } + + return false; + } } } diff --git a/BeWo/ViewModel/ListViewModel/ServiceRecordListVM.cs b/BeWo/ViewModel/ListViewModel/ServiceRecordListVM.cs index 1bb1ab921..73cf1b20a 100644 --- a/BeWo/ViewModel/ListViewModel/ServiceRecordListVM.cs +++ b/BeWo/ViewModel/ListViewModel/ServiceRecordListVM.cs @@ -193,7 +193,12 @@ namespace BeWo.ViewModel.ListViewModel public string AktuellerDokutext { get => PrototypeVM.Notice; - set => PrototypeVM.Notice = value; + set + { + PrototypeVM.Notice = value; + FirePropertyChanged(nameof(IsRedoButtonVisible)); + FirePropertyChanged(nameof(IsUndoButtonVisible)); + } } public bool IsAiButtonVisible => SelectedCustomerNode is object; @@ -240,28 +245,69 @@ namespace BeWo.ViewModel.ListViewModel ServiceFacade.DoAiEnhancedServiceAsnyc(x => x.ExecuteAiFunctionServiceRecordDocumentation(req), callback => { - var sb = new StringBuilder(); + var viewModel = new AiPromptbausteinActionResultViewModel(); - sb.AppendLine("AI Antwort:"); - sb.AppendLine(callback.Result); + viewModel.Result = callback.Result; - sb.AppendLine(); - sb.AppendLine("Original:"); - sb.AppendLine(AktuellerDokutext); - - var str = sb.ToString(); - var idx = _AiActionHistoryIndex; - var count = _AiActionHistory.Count; - - if(count - 1 > idx) + viewModel.Accept_Button_Clicked += (s, e) => { - _AiActionHistory.RemoveRange(idx, count - idx); - } + var sb = new StringBuilder(); - _AiActionHistory.Add(str); - _AiActionHistoryIndex++; + sb.AppendLine("AI Antwort:"); + sb.AppendLine(viewModel.Result); - AktuellerDokutext = str; + sb.AppendLine(); + sb.AppendLine("Original:"); + sb.AppendLine(AktuellerDokutext); + + var str = sb.ToString(); + var idx = _AiActionHistoryIndex; + var count = _AiActionHistory.Count; + + if (count - 1 > idx) + { + _AiActionHistory.RemoveRange(idx + 1, count - idx - 1); + } + + if(AktuellerDokutext != _AiActionHistory[_AiActionHistoryIndex]) + { + _AiActionHistory.Add(AktuellerDokutext); + _AiActionHistoryIndex++; + } + + _AiActionHistory.Add(str); + _AiActionHistoryIndex++; + + AktuellerDokutext = str; + }; + viewModel.Replace_Button_Clicked += (s, e) => + { + var str = viewModel.Result; + var idx = _AiActionHistoryIndex; + var count = _AiActionHistory.Count; + + if (count - 1 > idx) + { + _AiActionHistory.RemoveRange(idx + 1, count - idx - 1); + } + + if (AktuellerDokutext != _AiActionHistory[_AiActionHistoryIndex]) + { + _AiActionHistory.Add(AktuellerDokutext); + _AiActionHistoryIndex++; + } + + _AiActionHistory.Add(str); + _AiActionHistoryIndex++; + + AktuellerDokutext = str; + }; + viewModel.Retry_Button_Clicked += (s, e) => + { + PromptAccepted(sender, prompt); + }; + + BeWoApp.MainControl.WindowService.Show(viewModel); } ); } diff --git a/BeWo/ViewModel/View/AI/AiConversationChatViewModel.cs b/BeWo/ViewModel/View/AI/AiConversationChatViewModel.cs index e83a6c307..eb8eb0049 100644 --- a/BeWo/ViewModel/View/AI/AiConversationChatViewModel.cs +++ b/BeWo/ViewModel/View/AI/AiConversationChatViewModel.cs @@ -8,7 +8,6 @@ using System.Text; using System.Threading.Tasks; using System.Windows; using BeWo.ViewModel.ListViewModel; -using BeWo.ViewModel.View.Dialogs; using System.Windows.Input; using BS.Shared.Core; using DevExpress.Mvvm; diff --git a/BeWo/ViewModel/View/AI/AiPromptbausteinActionResultViewModel.cs b/BeWo/ViewModel/View/AI/AiPromptbausteinActionResultViewModel.cs new file mode 100644 index 000000000..5e8fbd3aa --- /dev/null +++ b/BeWo/ViewModel/View/AI/AiPromptbausteinActionResultViewModel.cs @@ -0,0 +1,79 @@ +using DevExpress.Mvvm; +using DevExpress.XtraBars.Docking2010.Views.WindowsUI; +using DevExpress.XtraRichEdit.Commands; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BeWo.ViewModel.View.AI +{ + public class AiPromptbausteinActionResultViewModel : DialogViewModel + { + public event EventHandler Accept_Button_Clicked; + public event EventHandler Cancel_Button_Clicked; + public event EventHandler Retry_Button_Clicked; + public event EventHandler Replace_Button_Clicked; + + public AiPromptbausteinActionResultViewModel() : base() + { + AcceptCommand = new DelegateCommand(Accept, canAccept, false); + CancelCommand = new DelegateCommand(Cancel, canCancel, false); + RetryCommand = new DelegateCommand(Retry, canRetry, false); + ReplaceCommand = new DelegateCommand(Replace, canReplace, false); + } + + public DelegateCommand AcceptCommand { get; set; } + public DelegateCommand CancelCommand { get; set; } + public DelegateCommand RetryCommand { get; set; } + public DelegateCommand ReplaceCommand { get; set; } + + public string Result { get; set; } + + public void Accept() + { + Close(); + Accept_Button_Clicked?.Invoke(this, EventArgs.Empty); + } + + public void Cancel() + { + Close(); + Cancel_Button_Clicked?.Invoke(this, EventArgs.Empty); + } + + public void Retry() + { + Close(); + Retry_Button_Clicked?.Invoke(this, EventArgs.Empty); + } + + public void Replace() + { + Close(); + Replace_Button_Clicked?.Invoke(this, EventArgs.Empty); + } + + private bool canAccept() + { + return true; + } + + private bool canCancel() + { + return true; + } + + private bool canRetry() + { + return true; + } + + private bool canReplace() + { + return true; + } + + } +} diff --git a/BeWo/ViewModel/View/AI/AiPromptbausteinSelectionViewModel.cs b/BeWo/ViewModel/View/AI/AiPromptbausteinSelectionViewModel.cs index 50289bbe5..940197903 100644 --- a/BeWo/ViewModel/View/AI/AiPromptbausteinSelectionViewModel.cs +++ b/BeWo/ViewModel/View/AI/AiPromptbausteinSelectionViewModel.cs @@ -1,7 +1,6 @@ using BeWo.ServiceProxy; using BeWo.Services; using BeWo.ViewModel.ListViewModel; -using BeWo.ViewModel.View.Dialogs; using BS.Shared; using BS.Shared.Extensions.CustomInterfaces; using DevExpress.Mvvm; diff --git a/BeWo/ViewModel/View/Administration/AiPromptbausteinComplexTreeViewModel.cs b/BeWo/ViewModel/View/Administration/AiPromptbausteinComplexTreeViewModel.cs index 841bdfff7..daeb18ca6 100644 --- a/BeWo/ViewModel/View/Administration/AiPromptbausteinComplexTreeViewModel.cs +++ b/BeWo/ViewModel/View/Administration/AiPromptbausteinComplexTreeViewModel.cs @@ -11,6 +11,7 @@ using DevExpress.Xpf.Layout.Core; using System; using System.Collections.Generic; using System.Linq; +using System.Runtime.Remoting.Metadata.W3cXsd2001; using System.Text; using System.Threading.Tasks; using System.Windows; @@ -85,14 +86,13 @@ namespace BeWo.ViewModel.View.Administration { get { - return false; + return Folders?.ContainsDirtyObject() ?? false; } } public bool HasCopiedFolder => CopiedFolder is object; public bool HasCopiedPrompt => CopiedPrompt is object; public CompactEmployeeDC CurrentEmployee => BeWoApp.CompactLoggedOnEmployee; - public void UpdateFolderCommands() { OpenAddFolderDialogCommand.RaiseCanExecuteChanged(); @@ -112,7 +112,41 @@ namespace BeWo.ViewModel.View.Administration public void SaveVMList() { + if (!IsDirty) + return; + // DFS -> 1. Sobald Knoten gefunden wird mit IsNew=true: Teilbaum als neu markieren + // 2. Sobald Knoten gefunden wird mit IsNew=false && IsDirty=true: Knoten als update markieren + // 3. Checken, welche Knoten gelöscht wurden + + var toadd_folder = new List(); + var toadd_prompts = new List(); + var toupdate_folder = new List(); + var toupdate_prompt = new List(); + DFS_Search_AddUpdate(Folders, ref toadd_folder, ref toadd_prompts, ref toupdate_folder, ref toupdate_prompt); + + var todelete_folder = new List(); + var todelete_prompt = new List(); + DFS_Search_Delete(Folders, ref todelete_folder, ref todelete_prompt); + + var toadd_folder_dcs = toadd_folder.Select(x => x.CommitToDataContract()); + var toupdate_folder_dcs = toupdate_folder.Select(x => x.CommitToDataContract()); + + var actions = new List>(); + + //if (toadd_dcs.Any()) + // actions.Add(x => x.CreateAiPromptbausteineTree(toadd_dcs.ToList())); + + //if (toupdate_dcs.Any()) + // actions.Add(x => x.UpdateAiPromptbausteineTree(toupdate_dcs.ToList())); + + //if (todelete.Any()) + // actions.Add(x => x.DeleteAiPromptbausteineTree(todelete.ToDictionary(x1 => x1.Oid.Value, x2 => x2.Version.Value))); + + ServiceFacade.DoMultipleAiEnhancedServicesAsync(actions, () => + { + ReloadVMList(); + }); } internal void ReloadVMList() { @@ -127,6 +161,50 @@ namespace BeWo.ViewModel.View.Administration } + void DFS_Search_AddUpdate(AiPromptbausteinFolderListVM folders, ref List toadd_Folder, ref List toadd_Prompts, ref List toupdate_Folder, ref List toupdate_Prompt) + { + foreach (var node in folders.VMList) + { + if (node.IsNew) + { + toadd_Folder.Add(node); + } + else + { + if (node.IsDirty) + toupdate_Folder.Add(node); + + if (node.HasSubFolders) + DFS_Search_AddUpdate(node.SubFolders, ref toadd_Folder, ref toadd_Prompts, ref toupdate_Folder, ref toupdate_Prompt); + + if (node.SubPrompts.AddedCount > 0) + toadd_Prompts.AddRange(node.SubPrompts.CommitAdded()); + + if (node.SubPrompts.ChangedCount > 0) + toupdate_Prompt.AddRange(node.SubPrompts.CommitChanged()); + } + } + } + + void DFS_Search_Delete(AiPromptbausteinFolderListVM folders, ref List todelete_Folder, ref List todelete_Prompt) + { + foreach (var node_dc in folders.DCBackup) + { + if (folders.VMList.FirstOrDefault(vm => vm.DataContract == node_dc) is AiPromptbausteinFolderVM node_vm) + { + if (node_vm.SubFolders.DCBackup is object && node_vm.SubFolders.DCBackup.Count > 0) + DFS_Search_Delete(node_vm.SubFolders, ref todelete_Folder, ref todelete_Prompt); + + if (node_vm.SubPrompts.RemovedCount > 0) + todelete_Prompt.AddRange(node_vm.SubPrompts.GetRemoved()); + } + else + { + todelete_Folder.Add(node_dc); + } + } + } + void OpenAddFolderDialog() { var sel_folder = SelectedFolder; @@ -274,6 +352,7 @@ namespace BeWo.ViewModel.View.Administration folder.SubPrompts.VMList.Remove(SelectedPrompt); } + bool canOpenAddPromptDialog() { return SelectedFolder?.CanAdd ?? false; diff --git a/BeWo/ViewModel/View/Administration/AiPromptbausteinDetailViewModel.cs b/BeWo/ViewModel/View/Administration/AiPromptbausteinDetailViewModel.cs index 59740bdaf..db8b45c50 100644 --- a/BeWo/ViewModel/View/Administration/AiPromptbausteinDetailViewModel.cs +++ b/BeWo/ViewModel/View/Administration/AiPromptbausteinDetailViewModel.cs @@ -1,5 +1,4 @@ using BeWo.ViewModel.ListViewModel; -using BeWo.ViewModel.View.Dialogs; using DevExpress.Mvvm; using DevExpress.Xpf.Docking; using System; diff --git a/BeWo/ViewModel/View/Administration/AiPromptbausteinFolderViewModel.cs b/BeWo/ViewModel/View/Administration/AiPromptbausteinFolderViewModel.cs index eee424b39..26bd1184d 100644 --- a/BeWo/ViewModel/View/Administration/AiPromptbausteinFolderViewModel.cs +++ b/BeWo/ViewModel/View/Administration/AiPromptbausteinFolderViewModel.cs @@ -1,5 +1,4 @@ -using BeWo.ViewModel.View.Dialogs; -using DevExpress.DataProcessing.InMemoryDataProcessor; +using DevExpress.DataProcessing.InMemoryDataProcessor; using DevExpress.Mvvm; using DevExpress.Mvvm.POCO; using DevExpress.XtraBars.Docking2010.Views.WindowsUI; diff --git a/BeWo/ViewModel/View/Administration/AiPromptbausteinPromptViewModel.cs b/BeWo/ViewModel/View/Administration/AiPromptbausteinPromptViewModel.cs index f5cba98b3..da48f33a8 100644 --- a/BeWo/ViewModel/View/Administration/AiPromptbausteinPromptViewModel.cs +++ b/BeWo/ViewModel/View/Administration/AiPromptbausteinPromptViewModel.cs @@ -1,5 +1,4 @@ -using BeWo.ViewModel.View.Dialogs; -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Text; diff --git a/BeWo/ViewModel/View/Dialogs/GkvAbrechnungDialogViewModel.cs b/BeWo/ViewModel/View/Gkv/GkvAbrechnungDialogViewModel.cs similarity index 91% rename from BeWo/ViewModel/View/Dialogs/GkvAbrechnungDialogViewModel.cs rename to BeWo/ViewModel/View/Gkv/GkvAbrechnungDialogViewModel.cs index ba0980a78..6d9e331e6 100644 --- a/BeWo/ViewModel/View/Dialogs/GkvAbrechnungDialogViewModel.cs +++ b/BeWo/ViewModel/View/Gkv/GkvAbrechnungDialogViewModel.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace BeWo.ViewModel.View.Dialogs +namespace BeWo.ViewModel.View.Gkv { public class GkvAbrechnungDialogViewModel : DialogViewModel {