Arbeitszeit: wiederkehrende Aufgaben + Auto-Aufgabe bei Klausurkorrektur (6.1.4/6.1.5)
Damit ist Kapitel 6 (Arbeitszeit & Aufgaben) vollständig abgeschlossen (bis auf den Export der Auswertung, der an das noch fehlende Kapitel 11 hängt). - WorkTask.Recurrence (None/Weekly/Monthly): beim Abschließen einer wiederkehrenden Aufgabe wird automatisch die nächste Instanz mit verschobenem Fälligkeitsdatum erzeugt. - GroupDetailViewModel.SetExamStatus legt beim ersten Wechsel einer Klausur von "Geplant" auf "Durchgeführt" automatisch eine Korrektur-Aufgabe an.
This commit is contained in:
@@ -179,6 +179,7 @@ public partial class GroupDetailViewModel : ObservableObject
|
||||
private readonly ISubjectRepository _subjects;
|
||||
private readonly IExamRepository _exams;
|
||||
private readonly IGradeRepository _grades;
|
||||
private readonly IWorkTaskRepository _tasks;
|
||||
|
||||
[ObservableProperty] private LearningGroup? _group;
|
||||
[ObservableProperty] private string _groupTitle = "";
|
||||
@@ -224,12 +225,12 @@ public partial class GroupDetailViewModel : ObservableObject
|
||||
|
||||
public GroupDetailViewModel(IGroupRepository groups, IStudentRepository students,
|
||||
IGroupMembershipRepository memberships, ISubjectRepository subjects,
|
||||
IExamRepository exams, IGradeRepository grades,
|
||||
IExamRepository exams, IGradeRepository grades, IWorkTaskRepository tasks,
|
||||
ParticipationTabViewModel participationTab, GradeOverviewTabViewModel gradeOverviewTab,
|
||||
PlanningTabViewModel planningTab)
|
||||
{
|
||||
_groups = groups; _students = students; _memberships = memberships; _subjects = subjects;
|
||||
_exams = exams; _grades = grades;
|
||||
_exams = exams; _grades = grades; _tasks = tasks;
|
||||
ParticipationTab = participationTab;
|
||||
GradeOverviewTab = gradeOverviewTab;
|
||||
PlanningTab = planningTab;
|
||||
@@ -418,12 +419,25 @@ public partial class GroupDetailViewModel : ObservableObject
|
||||
if (SelectedExam is null) return;
|
||||
var exam = _exams.GetById(SelectedExam.Id);
|
||||
if (exam is null) return;
|
||||
var previousStatus = exam.Status;
|
||||
exam.Status = status;
|
||||
if (status == ExamStatus.Returned)
|
||||
exam.ReturnedAt ??= DateOnly.FromDateTime(DateTime.Today);
|
||||
else
|
||||
exam.ReturnedAt = null;
|
||||
_exams.Save(exam);
|
||||
|
||||
// 6.1.5: beim erstmaligen Erreichen von "Durchgeführt" automatisch eine Korrektur-Aufgabe anlegen.
|
||||
if (status == ExamStatus.Conducted && previousStatus == ExamStatus.Planned)
|
||||
_tasks.Save(new WorkTask
|
||||
{
|
||||
Title = $"Klausur korrigieren: {exam.Title}",
|
||||
Category = TaskCategory.Correction,
|
||||
GroupId = exam.GroupId,
|
||||
DueDate = exam.Date.AddDays(14),
|
||||
Status = WorkTaskStatus.Open,
|
||||
});
|
||||
|
||||
var id = exam.Id;
|
||||
ReloadExams();
|
||||
SelectedExam = Exams.FirstOrDefault(e => e.Id == id);
|
||||
|
||||
Reference in New Issue
Block a user