aufräumen
This commit is contained in:
@@ -9,10 +9,10 @@ public class StudentRepository(LiteDbContext db) : IStudentRepository
|
||||
public List<Student> GetAll(bool includeInactive = false) =>
|
||||
(includeInactive ? db.Students.FindAll() : db.Students.Find(s => s.IsActive))
|
||||
.OrderBy(s => s.LastName).ToList();
|
||||
public List<Student> GetByGroup(Guid groupId, string schoolYear)
|
||||
public List<Student> GetByGroup(Guid groupId)
|
||||
{
|
||||
var ids = db.Enrollments
|
||||
.Find(e => e.GroupId == groupId && e.SchoolYear == schoolYear)
|
||||
var ids = db.Memberships
|
||||
.Find(e => e.GroupId == groupId)
|
||||
.Select(e => e.StudentId).ToHashSet();
|
||||
return db.Students.Find(s => ids.Contains(s.Id)).OrderBy(s => s.LastName).ToList();
|
||||
}
|
||||
@@ -31,11 +31,17 @@ public class GroupRepository(LiteDbContext db) : IGroupRepository
|
||||
? db.Groups.Find(g => g.SchoolYear == schoolYear)
|
||||
: db.Groups.Find(g => g.SchoolYear == schoolYear && g.IsActive))
|
||||
.OrderBy(g => g.Name).ToList();
|
||||
public void Save(LearningGroup g) { g.UpdatedAt = DateTime.UtcNow; db.Groups.Upsert(g); }
|
||||
public void Save(LearningGroup g)
|
||||
{
|
||||
if (g.SubjectId is Guid subjectId && db.Subjects.FindById(subjectId) is null)
|
||||
throw new InvalidOperationException("Das gewählte Fach existiert nicht mehr.");
|
||||
g.UpdatedAt = DateTime.UtcNow;
|
||||
db.Groups.Upsert(g);
|
||||
}
|
||||
public void Delete(Guid id)
|
||||
{
|
||||
foreach (var enrollment in db.Enrollments.Find(e => e.GroupId == id).ToList())
|
||||
db.Enrollments.Delete(enrollment.Id);
|
||||
foreach (var membership in db.Memberships.Find(e => e.GroupId == id).ToList())
|
||||
db.Memberships.Delete(membership.Id);
|
||||
|
||||
foreach (var exam in db.Exams.Find(e => e.GroupId == id).ToList())
|
||||
{
|
||||
@@ -71,16 +77,22 @@ public class GroupRepository(LiteDbContext db) : IGroupRepository
|
||||
}
|
||||
}
|
||||
|
||||
public class EnrollmentRepository(LiteDbContext db) : IEnrollmentRepository
|
||||
public class GroupMembershipRepository(LiteDbContext db) : IGroupMembershipRepository
|
||||
{
|
||||
public List<Enrollment> GetByStudent(Guid id) =>
|
||||
db.Enrollments.Find(e => e.StudentId == id).ToList();
|
||||
public List<Enrollment> GetByGroup(Guid id) =>
|
||||
db.Enrollments.Find(e => e.GroupId == id).ToList();
|
||||
public List<Enrollment> GetByGroupAndYear(Guid groupId, string sy) =>
|
||||
db.Enrollments.Find(e => e.GroupId == groupId && e.SchoolYear == sy).ToList();
|
||||
public void Save(Enrollment e) => db.Enrollments.Upsert(e);
|
||||
public void Delete(Guid id) => db.Enrollments.Delete(id);
|
||||
public List<GroupMembership> GetByStudent(Guid id) =>
|
||||
db.Memberships.Find(e => e.StudentId == id).ToList();
|
||||
public List<GroupMembership> GetByGroup(Guid id) =>
|
||||
db.Memberships.Find(e => e.GroupId == id).ToList();
|
||||
public GroupMembership? GetByStudentAndGroup(Guid studentId, Guid groupId) =>
|
||||
db.Memberships.FindOne(e => e.StudentId == studentId && e.GroupId == groupId);
|
||||
public void Save(GroupMembership membership)
|
||||
{
|
||||
var existing = GetByStudentAndGroup(membership.StudentId, membership.GroupId);
|
||||
if (existing is not null && existing.Id != membership.Id)
|
||||
throw new InvalidOperationException("Der Schüler ist dieser Lerngruppe bereits zugeordnet.");
|
||||
db.Memberships.Upsert(membership);
|
||||
}
|
||||
public void Delete(Guid id) => db.Memberships.Delete(id);
|
||||
}
|
||||
|
||||
public class ExamRepository(LiteDbContext db) : IExamRepository
|
||||
@@ -240,10 +252,25 @@ public class SubjectRepository(LiteDbContext db) : ISubjectRepository
|
||||
{
|
||||
public List<Subject> GetAll() => db.Subjects.FindAll().OrderBy(s => s.Name).ToList();
|
||||
public Subject? GetById(Guid id) => db.Subjects.FindById(id);
|
||||
public Subject? GetByName(string name) =>
|
||||
db.Subjects.FindOne(s => s.Name == name);
|
||||
public void Save(Subject s) { s.UpdatedAt = DateTime.UtcNow; db.Subjects.Upsert(s); }
|
||||
public void Delete(Guid id) => db.Subjects.Delete(id);
|
||||
public Subject? GetByName(string name) => db.Subjects.FindAll().FirstOrDefault(s =>
|
||||
string.Equals(s.Name.Trim(), name.Trim(), StringComparison.OrdinalIgnoreCase));
|
||||
public void Save(Subject s)
|
||||
{
|
||||
s.Name = s.Name.Trim();
|
||||
s.ShortName = s.ShortName.Trim();
|
||||
if (s.Name.Length == 0) throw new ArgumentException("Der Fachname darf nicht leer sein.");
|
||||
var duplicate = GetByName(s.Name);
|
||||
if (duplicate is not null && duplicate.Id != s.Id)
|
||||
throw new InvalidOperationException("Ein Fach mit diesem Namen existiert bereits.");
|
||||
s.UpdatedAt = DateTime.UtcNow;
|
||||
db.Subjects.Upsert(s);
|
||||
}
|
||||
public void Delete(Guid id)
|
||||
{
|
||||
if (db.Groups.Exists(g => g.SubjectId == id) || db.CompetencyDomains.Exists(d => d.SubjectId == id))
|
||||
throw new InvalidOperationException("Das Fach wird noch von einer Lerngruppe oder einem Kompetenzkatalog verwendet.");
|
||||
db.Subjects.Delete(id);
|
||||
}
|
||||
}
|
||||
|
||||
public class CompetencyDomainRepository(LiteDbContext db) : ICompetencyDomainRepository
|
||||
|
||||
Reference in New Issue
Block a user