namespace LehrerApp.Core.Models; /// /// Ein Sitzplan einer Lerngruppe. Eine Gruppe kann mehrere Pläne besitzen, /// beispielsweise für unterschiedliche Unterrichtsräume. /// public class SeatingPlan { public Guid Id { get; set; } = Guid.NewGuid(); public Guid GroupId { get; set; } public string Name { get; set; } = ""; public string Room { get; set; } = ""; public int Rows { get; set; } = 4; public int Columns { get; set; } = 4; /// /// Zeigt die Tafel unterhalb des Sitzrasters an. Der Standardwert false /// erhält für bestehende Pläne die bisherige Darstellung oberhalb des Rasters. /// public bool IsBoardAtBottom { get; set; } /// /// Zusätzlicher horizontaler Abstand nach jeder Spalte, in Pixeln. Der Eintrag mit Index 0 /// liegt zwischen der ersten und zweiten Spalte. Fehlende Einträge bedeuten keinen Abstand. /// public List ColumnGapWidths { get; set; } = []; public List Assignments { get; set; } = []; /// /// Plätze, für die im Raum physisch kein Tisch existiert (z. B. eine Reihe mit einer Lücke) — /// werden im Sitzplan ausgeblendet, bleiben aber Teil des Rasters, damit Reihen/Spalten /// weiterhin korrekt ausgerichtet sind. Ein ausgeblendeter Platz kann nie belegt sein, siehe /// SeatingPlanRepository.Save. /// public List HiddenSeats { get; set; } = []; public DateTime CreatedAt { get; set; } = DateTime.UtcNow; public DateTime UpdatedAt { get; set; } = DateTime.UtcNow; } public class SeatAssignment { public int Row { get; set; } public int Column { get; set; } public Guid StudentId { get; set; } } public class HiddenSeat { public int Row { get; set; } public int Column { get; set; } }