using LehrerApp.Core.Interfaces; using LehrerApp.Core.Models; namespace LehrerApp.Desktop.ViewModels.Groups; /// /// Unterrichtsmodus (14.x): konsolidierte Ansicht für eine konkrete, heute stattfindende Stunde - /// Verlaufsplan und Sitzplan mit Schnellbewertung auf einem Bildschirm, statt zwischen den Tabs /// der Gruppe hin- und herzuspringen. Wird über TimetableViewModel.StartTeachingModeCommand aus /// der "Heute"-Tagesliste heraus gestartet. /// /// Bewusst keine eigene DI-Registrierung als Singleton/Transient: wie LessonViewerViewModel wird /// diese ViewModel direkt vom Code-Behind konstruiert, das dafür nötige SeatingPlanTabViewModel /// aber weiterhin über DI aufgelöst (transient, siehe AppBootstrapper) und hier per Konstruktor /// entgegengenommen statt selbst aus App.Services zu ziehen - ViewModels greifen in diesem Code /// nicht selbst auf den Service-Container zu, das bleibt Aufgabe des Code-Behind. /// public class TeachingModeViewModel { public string GroupName { get; } public LessonViewerViewModel LessonInfo { get; } public SeatingPlanTabViewModel SeatingPlan { get; } public TeachingModeViewModel(Lesson lesson, LearningGroup group, IAlternativeLessonPathRepository alternativePaths, SeatingPlanTabViewModel seatingPlan) { GroupName = group.Name; LessonInfo = new LessonViewerViewModel(lesson, alternativePaths); SeatingPlan = seatingPlan; SeatingPlan.Initialize(group.Id, !group.IsActive); SeatingPlan.SelectOrCreateSessionForLesson(lesson); } }