diff --git a/LehrerApp.Desktop/ViewModels/ClassTeacher/ClassTeacherCasesViewModel.cs b/LehrerApp.Desktop/ViewModels/ClassTeacher/ClassTeacherCasesViewModel.cs index ff01c95..65c9288 100644 --- a/LehrerApp.Desktop/ViewModels/ClassTeacher/ClassTeacherCasesViewModel.cs +++ b/LehrerApp.Desktop/ViewModels/ClassTeacher/ClassTeacherCasesViewModel.cs @@ -97,7 +97,8 @@ public partial class ClassTeacherCasesViewModel : ObservableObject var names = vorgang.StudentIds.Select(id => nameById.GetValueOrDefault(id, "")) .Where(n => n != ""); var item = new VorgangItem(vorgang, string.Join(", ", names), LinkDocumentation, - UnlinkDocumentation, RemoveClassRegisterEntry) { IsRevealed = revealedIds.Contains(vorgang.Id) }; + UnlinkDocumentation, RemoveClassRegisterEntry, EditDocumentation) + { IsRevealed = revealedIds.Contains(vorgang.Id) }; var linkedIds = vorgang.DocumentationIds.ToHashSet(); foreach (var doc in allDocs.Where(d => linkedIds.Contains(d.Id))) @@ -169,6 +170,19 @@ public partial class ClassTeacherCasesViewModel : ObservableObject await LoadInternal(); } + /// Öffnet eine verknüpfte oder noch verknüpfbare Dokumentation im vollen Bearbeiten-Dialog, ohne + /// den Vorgänge-Tab zu verlassen (Nutzer-Feedback: bisher musste man dafür zum Nachlesen in den + /// Schülerdatensatz wechseln). Reine Bearbeitung der Dokumentation selbst — welche Vorgänge sie + /// verlinken, ändert sich dadurch nicht. + private async Task EditDocumentation(DocumentationItem doc) + { + if (OnEditDocumentation is null) return; + var result = await OnEditDocumentation(doc.Model.StudentId, _rosterStudentOptions, doc.Model); + if (result is null) return; + _documentation.Save(result); + await LoadInternal(); + } + /// Dokumentation der Vorgangs-Schüler*innen, die noch nicht mit diesem Vorgang verknüpft ist — /// reine, ohne Repository-Zugriff testbare Filterlogik (gleiches Muster wie /// ). diff --git a/LehrerApp.Desktop/ViewModels/ClassTeacher/VorgangViewModels.cs b/LehrerApp.Desktop/ViewModels/ClassTeacher/VorgangViewModels.cs index b6de0a5..7cbf8b2 100644 --- a/LehrerApp.Desktop/ViewModels/ClassTeacher/VorgangViewModels.cs +++ b/LehrerApp.Desktop/ViewModels/ClassTeacher/VorgangViewModels.cs @@ -58,6 +58,7 @@ public partial class VorgangItem : ObservableObject private readonly Func _onLink; private readonly Func _onUnlink; private readonly Func _onRemoveClassRegisterEntry; + private readonly Func _onEditDocumentation; public Vorgang Model { get; } public string StudentNames { get; } @@ -79,7 +80,8 @@ public partial class VorgangItem : ObservableObject public VorgangItem(Vorgang model, string studentNames, Func onLink, Func onUnlink, - Func onRemoveClassRegisterEntry) + Func onRemoveClassRegisterEntry, + Func onEditDocumentation) { Model = model; StudentNames = studentNames; @@ -87,10 +89,19 @@ public partial class VorgangItem : ObservableObject _onLink = onLink; _onUnlink = onUnlink; _onRemoveClassRegisterEntry = onRemoveClassRegisterEntry; + _onEditDocumentation = onEditDocumentation; } [RelayCommand] private void Reveal() => IsRevealed = !IsRevealed; + /// Öffnet den vollen Dokumentations-Dialog zum Nachlesen/Bearbeiten, ohne den Vorgänge-Tab zu + /// verlassen (Nutzer-Feedback: bisher musste man dafür in den Schülerdatensatz wechseln). + [RelayCommand] + private async Task EditDocumentation(DocumentationItem? doc) + { + if (doc is not null) await _onEditDocumentation(doc); + } + [RelayCommand] private async Task Link(DocumentationItem? doc) { diff --git a/LehrerApp.Desktop/Views/ClassTeacher/ClassTeacherCasesView.axaml b/LehrerApp.Desktop/Views/ClassTeacher/ClassTeacherCasesView.axaml index ab53b82..e8f73f0 100644 --- a/LehrerApp.Desktop/Views/ClassTeacher/ClassTeacherCasesView.axaml +++ b/LehrerApp.Desktop/Views/ClassTeacher/ClassTeacherCasesView.axaml @@ -99,7 +99,7 @@ - + @@ -111,7 +111,13 @@