Sitzungen (3.3): aus Stunde erzeugen, löschen, Kalenderüberblick; Doppelstunden-Bugfix Serienerzeugung
Kapitel 3.3: neuer Button erzeugt eine Mitarbeitssitzung aus einer geplanten Stunde (Datum/Thema, dupl.-sicher über Lesson.LessonId), Sitzungen lassen sich jetzt mit Rückfrage bei vorhandenen Bewertungen löschen, und der Dashboard-Kalender zeigt Sitzungen als dritten Termintyp neben Stunden/ Klausuren. Das Bearbeiten von Sitzungen war bereits vorhanden (undokumentiert aus früherer Ad-hoc-Arbeit) und wird hier nur nachgezogen. Bugfix: "Serie erzeugen" legte für Doppelstunden zwei Lessons mit gleichem Datum an statt einer, da jede Stundenplan-Periode einzeln behandelt wurde. Folgeperioden werden jetzt der Lesson der ersten Periode zugerechnet. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -54,6 +54,7 @@ public partial class ParticipationTabViewModel : ObservableObject
|
||||
public Func<ParticipationTabViewModel, Task>? OnComputeGrade { get; set; }
|
||||
public Func<ParticipationTabViewModel, Task>? OnOpenWizard { get; set; }
|
||||
public Func<ParticipationTabViewModel, Task>? OnManageAspects { get; set; }
|
||||
public Func<ParticipationSessionItem, int, Task<bool>>? OnConfirmDeleteSession { get; set; }
|
||||
|
||||
public ParticipationTabViewModel(
|
||||
IParticipationSessionRepository sessions,
|
||||
@@ -120,6 +121,7 @@ public partial class ParticipationTabViewModel : ObservableObject
|
||||
{
|
||||
OnPropertyChanged(nameof(SelectedSessionDisplay));
|
||||
EditSessionCommand.NotifyCanExecuteChanged();
|
||||
DeleteSessionCommand.NotifyCanExecuteChanged();
|
||||
if (value is null)
|
||||
{
|
||||
StudentRows.Clear();
|
||||
@@ -282,7 +284,11 @@ public partial class ParticipationTabViewModel : ObservableObject
|
||||
|
||||
private bool CanEditSession() => !IsReadOnly && SelectedSession is not null;
|
||||
|
||||
partial void OnIsReadOnlyChanged(bool value) => EditSessionCommand.NotifyCanExecuteChanged();
|
||||
partial void OnIsReadOnlyChanged(bool value)
|
||||
{
|
||||
EditSessionCommand.NotifyCanExecuteChanged();
|
||||
DeleteSessionCommand.NotifyCanExecuteChanged();
|
||||
}
|
||||
|
||||
[RelayCommand(CanExecute = nameof(CanQuickInput))]
|
||||
private async Task QuickInput()
|
||||
@@ -325,14 +331,20 @@ public partial class ParticipationTabViewModel : ObservableObject
|
||||
if (SelectedSession is not null) LoadGrid(SelectedSession.Id);
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
private void DeleteSession()
|
||||
[RelayCommand(CanExecute = nameof(CanDeleteSession))]
|
||||
private async Task DeleteSession()
|
||||
{
|
||||
if (SelectedSession is null) return;
|
||||
var entryCount = _entries.GetBySession(SelectedSession.Id).Count;
|
||||
if (OnConfirmDeleteSession is not null
|
||||
&& !await OnConfirmDeleteSession(SelectedSession, entryCount)) return;
|
||||
|
||||
_sessions.Delete(SelectedSession.Id);
|
||||
LoadSessions();
|
||||
}
|
||||
|
||||
private bool CanDeleteSession() => !IsReadOnly && SelectedSession is not null;
|
||||
|
||||
public void SaveNote(Guid sessionId, Guid studentId, string note)
|
||||
{
|
||||
var entry = _entries.GetBySessionAndStudent(sessionId, studentId);
|
||||
|
||||
Reference in New Issue
Block a user