using LehrerApp.Core.Models; namespace LehrerApp.Core.Interfaces; public interface IStudentRepository { Student? GetById(Guid id); List GetAll(bool includeInactive = false); List GetByGroup(Guid groupId, string schoolYear); void Save(Student student); void Delete(Guid id); } public interface IGroupRepository { LearningGroup? GetById(Guid id); List GetAll(); List GetBySchoolYear(string schoolYear); void Save(LearningGroup group); void Delete(Guid id); } public interface IEnrollmentRepository { List GetByStudent(Guid studentId); List GetByGroup(Guid groupId); List GetByGroupAndYear(Guid groupId, string schoolYear); void Save(Enrollment enrollment); void Delete(Guid id); } public interface IExamRepository { Exam? GetById(Guid id); List GetByGroup(Guid groupId); void Save(Exam exam); void Delete(Guid id); } public interface IExamResultRepository { List GetByExam(Guid examId); List GetByStudent(Guid studentId); ExamResult? GetByExamAndStudent(Guid examId, Guid studentId); void Save(ExamResult result); void SaveMany(List results); } public interface IGradeRepository { List GetByStudentAndGroup(Guid studentId, Guid groupId); List GetByGroup(Guid groupId); void Save(Grade grade); void Delete(Guid id); } public interface IUnitRepository { Unit? GetById(Guid id); List GetByGroup(Guid groupId); void Save(Unit unit); void Delete(Guid id); } public interface ILessonRepository { List GetByUnit(Guid unitId); List GetByGroupAndDate(Guid groupId, DateOnly date); List GetByGroupAndRange(Guid groupId, DateOnly from, DateOnly to); void Save(Lesson lesson); void Delete(Guid id); } public interface IDocumentationRepository { List GetByStudent(Guid studentId); List GetByStudentAndType(Guid studentId, DocumentationType type); void Save(Documentation doc); void Delete(Guid id); } public interface IWorkTaskRepository { List GetByStatus(WorkTaskStatus status); List GetAll(); void Save(WorkTask task); void Delete(Guid id); } public interface ITimeEntryRepository { List GetByDate(DateOnly date); List GetByDateRange(DateOnly from, DateOnly to); List GetByTask(Guid taskId); void Save(TimeEntry entry); void Delete(Guid id); } public interface IParticipationSessionRepository { List GetByGroup(Guid groupId); ParticipationSession? GetById(Guid id); void Save(ParticipationSession session); void Delete(Guid id); } public interface IParticipationRepository { List GetBySession(Guid sessionId); List GetByStudent(Guid studentId); ParticipationEntry? GetBySessionAndStudent(Guid sessionId, Guid studentId); void Save(ParticipationEntry entry); void SaveMany(List entries); void DeleteBySession(Guid sessionId); } public interface IParticipationAspectRepository { List GetDefaults(); List GetByGroup(Guid groupId); void Save(ParticipationAspect aspect); void Delete(Guid id); }